Wijzig de sprite-afbeelding terwijl het spel draait
Verificatie omgeving
- Ramen
-
- Vensters 11
- Unity-editor
-
- 2020.3.25f1
- Pakketten met invoersystemen
-
- 1.2.0
Vereisten voor deze tip
De volgende instellingen zijn vooraf geconfigureerd als voorwaarde voor de uitleg van deze tips.
Over het wijzigen van de afbeelding van een sprite
Zoals je kunt zien bij het spelen van een 2D-game, zie je vaak een scène waarin het beeld dat is ingesteld als een sprite in het midden schakelt. De deur wordt bijvoorbeeld eerst gesloten, maar door deze te openen, wordt deze weergegeven als een open deur.
Om dit te bereiken, kunt u twee objecten voorbereiden, een gesloten deur en een open deur, en deze laten zien of verbergen. Hier zullen we proberen dit te bereiken door het beeld van de sprite te veranderen.
Afbeeldingen toevoegen en plaatsen in een project
Deze keer heb je een afbeelding nodig voor de wijziging en een afbeelding na de wijziging, dus bereid er twee voor.
Hier is de UnityTips
UnityTipsChange
bestandsnaam respectievelijk .
Laat de sprite uit het project vallen en plaats deze. Wanneer op de knop wordt geklikt, verandert de afbeelding, dus plaats de knop vanuit de gebruikersinterface.
Een script voor het wijzigen van afbeeldingen maken
Maak een script. De naam is willekeurig, maar in dit geval SpriteChange
is het .
Klik deze keer op de knop zodat de afbeelding van de sprite op het moment verandert. Ook wordt de te wijzigen sprite van tevoren ingesteld. Als je het wijzigt, kun je sprites dynamisch maken en configureren. De manier om het te veranderen is in principe hetzelfde.
Het script ziet er als volgt uit:
using UnityEngine;
public class SpriteChange : MonoBehaviour
{
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
<summary>ボタンをクリックしたときに呼ばれます。</summary>
public void OnClick()
{
if (TargetSprite == null)
{
Debug.Log($"{nameof(TargetSprite)} が null です。");
return;
}
if (NextSprite == null)
{
Debug.Log($"{nameof(NextSprite)} が null です。");
return;
}
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
if (spriteRenderer == null)
{
Debug.Log($"{nameof(TargetSprite)} に {nameof(SpriteRenderer)} コンポーネントがありません。");
return;
}
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
}
}
Bereid in het veld de sprite voor, het object dat moet worden gewijzigd en de sprite die de afbeelding zal zijn na de wijziging.
GameObject
U kunt zien dat u het doelobject vanuit de hiërarchie kunt instellen.
Sprite
Het kan een kwestie zijn van wat in te stellen .
Hiervoor denk ik dat het "textuurtype" van het afbeeldingsbestand dat aan het project wordt toegevoegd standaard "Sprite (2D en UI)" is, dus het kan automatisch worden behandeld als een sprite. Je kunt het dus als een sprite behandelen door gewoon het afbeeldingsbestand in te stellen.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
De methode wordt naar verwachting aangeroepen wanneer op de knop wordt geklikt. De naam van de methode is willekeurig.
OnClick
In de methode wisselen we het beeld.
Omdat degene is die de afbeeldingsinformatie heeft SpriteRenderer
, krijgen we de component van het SpriteRenderer
GameObject.
SpriteRenderer
De klasse heeft een eigenschap waar je de afbeelding kunt verwisselen door deze in te stellen op een sprite die een sprite
nieuwe afbeelding heeft.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Nadat u het script hebt opgeslagen, koppelt u het aan het object. Het te bevestigen object is optioneel, maar in dit geval EventSystem
is het bevestigd aan .
Aangezien er "Target Sprite" en "Next Sprite" als parameters zijn, heeft "Target Sprite" sprite-objecten uit de hiërarchie,
"Volgende Sprite" is ingesteld op het gewijzigde afbeeldingsbestand van het project.
Geef de methode op uit OnClick
het script dat is gekoppeld aan de klikgebeurtenis EventSystem
van de knop.
Start het spel en probeer op de knop te drukken. Als het beeld verandert, is het een succes.