Muutke spraidi pilti mängu töötamise ajal

Lehekülg uuendatud :
Lehe loomise kuupäev :

Kontrollimise keskkond

Windows
  • Windows 11
Ühtsuse toimetaja
  • 2020.3.25f1
Sisendsüsteemi paketid
  • 1.2.0

Selle näpunäite eeltingimused

Järgmised sätted on eelkonfigureeritud nende näpunäidete selgitamise eeltingimusena.

Spraidi kujutise muutmise kohta

Nagu näete 2D-mängu mängides, näete sageli stseeni, kus spraidina seatud pilt lülitub keskele. Näiteks on uks alguses suletud, kuid selle avamisel kuvatakse see avatud uksena.

Selle saavutamiseks saate valmistada kaks objekti, suletud ukse ja avatud ukse ning näidata või peita neid. Siin püüame seda saavutada, vahetades spraidi pilti.

Piltide lisamine ja paigutamine projekti

Seekord vajate pilti enne muudatust ja pilti pärast muudatust, nii et palun valmistage ette kaks. UnityTipsUnityTipsChange Siin on faili nimi vastavalt.

Pange sprait projektist välja ja asetage see. Nupu klõpsamisel pilt muutub, seega asetage nupp kasutajaliidesest.

Tõmmise muutmise skripti loomine

Skripti loomine. Nimi on meelevaldne, kuid antud juhul SpriteChange , see on .

Seekord klõpsake nuppu nii, et spraidi pilt muutub ajastusel. Samuti määratakse eelnevalt muudetav sprait. Kui muudate seda, saate spraite dünaamiliselt luua ja konfigureerida. Selle muutmise viis on põhimõtteliselt sama.

Skript näeb välja selline:

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

Põllul valmistage ette sprait, muudetav objekt ja sprait, mis on pärast muudatust pilt.

GameObject Näete, et saate sihtobjekti hierarhiast seada. Sprite Küsimus võib olla selles, mida sisse seada .

Selleks arvan, et projektile lisatud pildifaili "tekstuuritüüp" on vaikimisi "Sprite (2D ja UI)", nii et seda saab automaatselt käsitleda spraidina. Nii saate seda käsitleda spraidina lihtsalt pildifaili seadistamisega.

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

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

OnClick Eeldatakse, et meetod helistatakse nupu klõpsamisel. Meetodi nimi on meelevaldne.

OnClick Meetodis vahetame pilti. Kuna see on see, millel on SpriteRenderer pilditeave, saame komponendi GameObjectist SpriteRenderer . SpriteRenderer Klassil on omadus, kus saate pilti vahetada, seades selle spraidiks, millel on sprite uus pilt.

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

// 省略

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

Pärast skripti salvestamist lisage see objektile. Kinnitatav objekt on valikuline, kuid sel juhul EventSystem on see seotud . Kuna parameetritena on "Target Sprite" ja "Next Sprite", on "Target Sprite" hierarhiast spraidiobjektid, "Next Sprite" on seatud projekti muudetud pildifailile.

Määrake meetod nupu klõpsamissündmusele EventSystem lisatud skriptist OnClick .

Käivitage mäng ja proovige nuppu vajutada. Kui pilt muutub, on see edukas.