Ändere das Sprite-Bild, während das Spiel läuft

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Verifikations-Umgebung

Fenster
  • Windows 11
Unity-Editor
  • 2020.3.25f1
Eingabesystem-Pakete
  • 1.2.0

Voraussetzungen für diesen Tipp

Die folgenden Einstellungen sind als Voraussetzung für die Erläuterung dieser Tipps vorkonfiguriert.

Ändern des Bildes eines Sprites

Wie Sie beim Spielen eines 2D-Spiels sehen können, werden Sie oft eine Szene sehen, in der das als Sprite festgelegte Bild in der Mitte wechselt. Zum Beispiel ist die Tür zunächst geschlossen, aber beim Öffnen wird sie als offene Tür angezeigt.

Um dies zu erreichen, können Sie zwei Objekte, eine geschlossene Tür und eine offene Tür, vorbereiten und ein- oder ausblenden. Hier werden wir versuchen, dies zu erreichen, indem wir das Bild des Sprites ändern.

Hinzufügen und Platzieren von Bildern in einem Projekt

Dieses Mal benötigen Sie ein Bild vor der Änderung und ein Bild nach der Änderung, also bereiten Sie bitte zwei vor. Hier lautet der UnityTipsUnityTipsChange Dateiname entsprechend.

Ziehe das Sprite aus dem Projekt ab und platziere es. Wenn auf die Schaltfläche geklickt wird, ändert sich das Bild, also platzieren Sie die Schaltfläche auf der Benutzeroberfläche.

Erstellen eines Bildänderungsskripts

Erstellen Sie ein Skript. Der Name ist willkürlich, aber in diesem Fall SpriteChange ist es .

Klicken Sie dieses Mal auf die Schaltfläche, damit sich das Bild der Figur zum richtigen Zeitpunkt ändert. Außerdem wird das zu ändernde Sprite im Voraus festgelegt. Wenn Sie es ändern, können Sie Sprites dynamisch erstellen und konfigurieren. Die Art und Weise, wie man es ändert, ist im Grunde die gleiche.

Das Skript sieht folgendermaßen aus:

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;
  }
}

Bereiten Sie im Feld das Sprite, das zu ändernde Objekt und das Sprite vor, das nach der Änderung das Bild sein wird.

GameObject Sie sehen, dass Sie das Zielobjekt aus der Hierarchie setzen können. Sprite Es kann eine Frage sein, was in eingestellt werden soll.

Dazu denke ich, dass der "Texturtyp" der Bilddatei, die dem Projekt hinzugefügt wird, standardmäßig "Sprite (2D und UI)" ist, so dass sie automatisch als Sprite behandelt werden kann. Sie können es also als Sprite behandeln, indem Sie einfach die Bilddatei festlegen.

/// <summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;

/// <summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;

OnClick Es wird erwartet, dass die Methode aufgerufen wird, wenn auf die Schaltfläche geklickt wird. Der Methodenname ist beliebig.

OnClick Bei der Methode wechseln wir das Bild. Da es sich um diejenige handelt, die die Bildinformationen enthält SpriteRenderer , erhalten wir die Komponente aus dem SpriteRenderer GameObject. SpriteRenderer Die Klasse verfügt über eine Eigenschaft, mit der Sie das Bild austauschen können, indem Sie es auf ein Sprite mit einem sprite neuen Bild festlegen.

// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();

// 省略

// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;

Nachdem Sie das Skript gespeichert haben, fügen Sie es an das Objekt an. Das anzuhängende Objekt ist optional, aber in diesem Fall EventSystem wird es an angefügt. Da es "Target Sprite" und "Next Sprite" als Parameter gibt, hat "Target Sprite" Sprite-Objekte aus der Hierarchie, "Nächstes Sprite" wird auf die geänderte Bilddatei aus dem Projekt gesetzt.

Geben Sie die Methode aus OnClick dem Skript an, das an das Klickereignis EventSystem der Schaltfläche angehängt ist.

Starten Sie das Spiel und versuchen Sie, die Taste zu drücken. Wenn sich das Bild ändert, ist es ein Erfolg.