Mainiet sprite attēlu, kamēr spēle darbojas

Lapa atjaunota :
Lapas izveides datums :

Verifikācijas vide

Windows
  • Operētājsistēmā Windows 11
Vienotības redaktors
  • 2020.3.25f1
Ievades sistēmas pakotnes
  • 1.2.0

Priekšnoteikumi šim padomam

Tālāk norādītie iestatījumi ir iepriekš konfigurēti kā priekšnosacījums šo padomu skaidrojumam.

Par sprite attēla maiņu

Kā redzat, spēlējot 2D spēli, jūs bieži redzēsiet ainu, kurā attēls, kas iestatīts kā sprite, pārslēdzas vidū. Piemēram, durvis sākumā tiek aizvērtas, bet, atverot tās, tās tiek parādītas kā atvērtas durvis.

Lai to panāktu, varat sagatavot divus objektus, slēgtas durvis un atvērtas durvis, kā arī parādīt vai paslēpt tos. Šeit mēs centīsimies to sasniegt, pārslēdzot sprite attēlu.

Attēlu pievienošana un ievietošana projektā

Šoreiz jums ir nepieciešams attēls pirms izmaiņām un attēls pēc izmaiņām, tāpēc, lūdzu, sagatavojiet divus. UnityTipsUnityTipsChange Šeit faila nosaukums ir , attiecīgi.

Nometiet sprite no projekta un novietojiet to. Noklikšķinot uz pogas, attēls mainās, tāpēc novietojiet pogu no lietotāja saskarnes.

Attēla maiņas skripta izveide

Izveidojiet skriptu. Nosaukums ir patvaļīgs, bet šajā gadījumā SpriteChange – tas ir .

Šoreiz noklikšķiniet uz pogas, lai sprite attēls mainītos laikā. Arī maināmais sprite tiks noteikts iepriekš. Ja to maināt, varat dinamiski izveidot un konfigurēt sprites. Veids, kā to mainīt, būtībā ir vienāds.

Skripts izskatās šādi:

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

Laukā sagatavojiet sprite, maināmo objektu un sprite, kas būs attēls pēc izmaiņām.

GameObject Jūs varat redzēt, ka varat iestatīt mērķa objektu no hierarhijas. Sprite Tas var būt jautājums par to, ko sākt .

Šim nolūkam es domāju, ka projektam pievienotā attēla faila "tekstūras tips" pēc noklusējuma ir "Sprite (2D un UI)", tāpēc to var automātiski uzskatīt par sprite. Tātad jūs varat to uzskatīt par sprite, vienkārši iestatot attēla failu.

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

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

OnClick Paredzams, ka metode tiks izsaukta, kad tiks noklikšķināts uz pogas. Metodes nosaukums ir patvaļīgs.

OnClick Metodē mēs pārslēdzam attēlu. Tā kā ir tas, kuram ir SpriteRenderer attēla informācija, mēs iegūstam komponentu no SpriteRenderer GameObject. SpriteRenderer Klasei ir īpašums, kurā varat apmainīt attēlu, iestatot to uz sprite, kurai ir sprite jauns attēls.

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

// 省略

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

Pēc skripta saglabāšanas pievienojiet to objektam. Pievienojamais objekts nav obligāts, bet šajā gadījumā EventSystem , tas ir pievienots . Tā kā parametri ir "Target Sprite" un "Next Sprite", "Target Sprite" ir sprite objekti no hierarhijas, "Next Sprite" ir iestatīts uz mainīto attēla failu no projekta.

Norādiet metodi no OnClick skripta, kas pievienots pogas klikšķa notikumam EventSystem .

Palaidiet spēli un mēģiniet nospiest pogu. Ja attēls mainās, tas ir panākums.