Spreminjanje slike grafičnega grafa med izvajanjem igre

Stran posodobljena :
Datum ustvarjanja strani :

Okolje za preverjanje

Windows
  • Windows 11
Urejevalnik Unity
  • 2020.3.25F1
Paketi vhodnih sistemov
  • 1.2.0

Predpogoji za ta nasvet

Naslednje nastavitve so vnaprej konfigurirane kot predpogoj za razlago teh nasvetov.

O spreminjanju podobe duhovnika

Kot lahko vidite pri igranju 2D igre, boste pogosto videli prizor, kjer se slika, nastavljena kot sprite, preklopi na sredini. Na primer, vrata so sprva zaprta, toda z odpiranjem se prikažejo kot odprta vrata.

Da bi to dosegli, lahko pripravite dva predmeta, zaprta vrata in odprta vrata ter jih pokažete ali skrijete. Tu ga bomo poskušali doseči s preklopom podobe duhovnika.

Dodajanje in umeščanje slik v projekt

Tokrat potrebujete sliko pred spremembo in sliko po spremembi, zato vas prosimo, da pripravite dve. Tu UnityTipsUnityTipsChange je ime datoteke , oziroma.

Spustite duhovnika iz projekta in ga postavite. Ko kliknete gumb, se slika spremeni, zato postavite gumb iz uporabniškega vmesnika.

Ustvarjanje skripta za spremembo slike

Ustvarite skript. Ime je poljubno, vendar je v tem primeru SpriteChange .

Tokrat kliknite gumb, tako da se slika sprite spremeni ob času. Tudi duhovnik, ki ga je treba spremeniti, bo vnaprej določen. Če ga spremenite, lahko dinamično ustvarjate in konfigurirate grafične grafike. Način, kako ga spremeniti, je v bistvu enak.

Scenarij izgleda takole:

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

Na terenu pripravite duhovnika, predmet, ki ga želite spremeniti, in duhovnika, ki bo slika po spremembi.

GameObject Vidite lahko, da lahko nastavite ciljni predmet iz hierarhije. Sprite Lahko gre za vprašanje, kaj nastaviti .

Za to mislim, da je "vrsta teksture" slikovne datoteke, dodane projektu, privzeto "Sprite (2D in UI)", zato jo je mogoče samodejno obravnavati kot sprite. Tako ga lahko obravnavate kot sprite samo z nastavitvijo slikovne datoteke.

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

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

OnClick Pričakuje se, da bo metoda poklicana, ko kliknete gumb. Ime metode je poljubno.

OnClick Pri metodi preklapljamo sliko. Ker je tisti, ki ima SpriteRenderer slikovne informacije, dobimo komponento SpriteRenderer iz GameObject. SpriteRenderer Razred ima lastnost, kjer lahko zamenjate sliko tako, da jo nastavite na sprite, ki ima sprite novo sliko.

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

// 省略

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

Ko shranite skript, ga priložite predmetu. Predmet, ki ga je treba pritrditi, ni obvezen, vendar je v tem primeru EventSystem pritrjen na . Ker kot parametra obstajata "Target Sprite" in "Next Sprite", ima "Target Sprite" predmete iz hierarhije, "Next Sprite" je nastavljen na spremenjeno slikovno datoteko iz projekta.

Določite način iz OnClick skripta, priloženega dogodku EventSystem klika gumba .

Zaženite igro in poskusite pritisniti gumb. Če se slika spremeni, je uspešna.