Schimbați imaginea sprite-ului în timp ce jocul rulează

Pagina actualizată :
Data creării paginii :

Mediul de verificare

Windows
  • Ferestre 11
Unity Editor
  • 2020.3.25F1
Pachete de sisteme de intrare
  • 1.2.0

Cerințe preliminare pentru acest sfat

Următoarele setări sunt preconfigurate ca o condiție prealabilă pentru explicarea acestor sfaturi.

Despre schimbarea imaginii unui personaj

După cum puteți vedea atunci când jucați un joc 2D, veți vedea adesea o scenă în care imaginea setată ca sprite se schimbă în mijloc. De exemplu, ușa este închisă la început, dar deschizând-o, este afișată ca o ușă deschisă.

Pentru a realiza acest lucru, puteți pregăti două obiecte, o ușă închisă și o ușă deschisă și le puteți arăta sau ascunde. Aici, vom încerca să o realizăm schimbând imaginea sprite-ului.

Adăugarea și plasarea imaginilor într-un proiect

De data aceasta, aveți nevoie de o imagine înainte de schimbare și de o imagine după schimbare, așa că vă rugăm să pregătiți două. Aici, numele fișierului UnityTipsUnityTipsChange este , respectiv.

Aruncați personajul din proiect și plasați-l. Când se face clic pe buton, imaginea se schimbă, deci plasați butonul din interfața de utilizare.

Crearea unui script de modificare a imaginii

Creați un script. Numele este arbitrar, dar în acest caz SpriteChange , este .

De data aceasta, faceți clic pe buton, astfel încât imaginea personajului să se schimbe la momentul respectiv. De asemenea, personajul care urmează să fie schimbat va fi stabilit în avans. Dacă îl schimbi, poți crea și configura personaje în mod dinamic. Modul de a o schimba este în esență același.

Scenariul arată astfel:

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

În câmp, pregătiți sprite-ul, obiectul care urmează să fie schimbat și sprite-ul care va fi imaginea după schimbare.

GameObject Puteți vedea că puteți seta obiectul țintă din ierarhie. Sprite Poate fi o întrebare despre ce să setați .

Pentru aceasta, cred că "tipul de textură" al fișierului imagine adăugat la proiect este "Sprite (2D și UI)" în mod implicit, deci poate fi tratat automat ca un sprite. Deci, îl puteți trata ca pe un sprite doar setând fișierul imagine.

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

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

OnClick Metoda este de așteptat să fie apelată atunci când se face clic pe buton. Numele metodei este arbitrar.

OnClick În metodă, schimbăm imaginea. Deoarece este cel care are SpriteRenderer informațiile despre imagine, obținem componenta din SpriteRenderer GameObject. SpriteRenderer Clasa are o proprietate în care puteți schimba imaginea setând-o la un personaj care are o sprite imagine nouă.

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

// 省略

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

După ce salvați scriptul, atașați-l la obiect. Obiectul care trebuie atașat este opțional, dar în acest caz EventSystem , este atașat la . Deoarece există "Target Sprite" și "Next Sprite" ca parametri, "Target Sprite" are obiecte sprite din ierarhie, "Next Sprite" este setat la fișierul imagine modificat din proiect.

Specificați metoda din OnClick scriptul atașat la evenimentul EventSystem de clic al butonului .

Rulați jocul și încercați să apăsați butonul. Dacă imaginea se schimbă, este un succes.