Modificare l'immagine dello sprite mentre il gioco è in esecuzione

Pagina aggiornata :
Data di creazione della pagina :

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 UnityTipsUnityTipsChange 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.