Modificare l'immagine dello sprite mentre il gioco è in esecuzione
Ambiente di verifica
- Finestre
-
- finestre 11
- Unity Editor
-
- 2020.3.25f1
- Pacchetti del sistema di input
-
- 1.2.0
Prerequisiti per questo suggerimento
Le seguenti impostazioni sono preconfigurate come prerequisito per la spiegazione di questi suggerimenti.
Informazioni sulla modifica dell'immagine di uno sprite
Come si può vedere quando si gioca a un gioco 2D, spesso si vede una scena in cui l'immagine impostata come uno sprite cambia nel mezzo. Ad esempio, la porta è inizialmente chiusa, ma aprendola viene visualizzata come una porta aperta.
Per ottenere ciò, puoi preparare due oggetti, una porta chiusa e una porta aperta, e mostrarli o nasconderli. Qui, cercheremo di ottenerlo cambiando l'immagine dello sprite.
Aggiunta e inserimento di immagini in un progetto
Questa volta, hai bisogno di un'immagine prima della modifica e di un'immagine dopo la modifica, quindi preparane due.
In questo caso, il nome del UnityTips
UnityTipsChange
file è , rispettivamente.
Rilascia lo sprite dal progetto e posizionalo. Quando si fa clic sul pulsante, l'immagine cambia, quindi posiziona il pulsante dall'interfaccia utente.
Creazione di uno script di modifica dell'immagine
Creare uno script. Il nome è arbitrario, ma in questo caso SpriteChange
lo è .
Questa volta, fai clic sul pulsante in modo che l'immagine dello sprite cambi al momento. Inoltre, lo sprite da cambiare verrà impostato in anticipo. Se lo modifichi, puoi creare e configurare gli sprite in modo dinamico. Il modo per cambiarlo è fondamentalmente lo stesso.
Lo script è simile al seguente:
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;
}
}
Nel campo, prepara lo sprite, l'oggetto da modificare e lo sprite che sarà l'immagine dopo la modifica.
GameObject
Come si può notare, è possibile impostare l'oggetto di destinazione dalla gerarchia.
Sprite
Potrebbe essere una questione di cosa impostare in .
Per questo, penso che il "tipo di texture" del file immagine aggiunto al progetto sia "Sprite (2D e UI)" per impostazione predefinita, quindi può essere automaticamente trattato come uno sprite. Quindi puoi trattarlo come uno sprite semplicemente impostando il file immagine.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
È previsto che il metodo venga chiamato quando si fa clic sul pulsante. Il nome del metodo è arbitrario.
OnClick
Nel metodo, stiamo cambiando l'immagine.
Poiché è quello che contiene SpriteRenderer
le informazioni sull'immagine, otteniamo il componente da SpriteRenderer
GameObject.
SpriteRenderer
La classe ha una proprietà in cui è possibile scambiare l'immagine impostandola su uno sprite con una sprite
nuova immagine.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Dopo aver salvato lo script, allegarlo all'oggetto. L'oggetto da associare è facoltativo, ma in questo caso EventSystem
viene associato a .
Poiché ci sono "Target Sprite" e "Next Sprite" come parametri, "Target Sprite" ha oggetti sprite dalla gerarchia,
"Sprite successivo" è impostato sul file immagine modificato dal progetto.
Specificare il metodo dallo OnClick
script allegato all'evento EventSystem
click del pulsante.
Esegui il gioco e prova a premere il pulsante. Se l'immagine cambia, è un successo.