Zmena zloženého obrázka počas spustenia hry
Prostredie overovania
- Windows
-
- Windows 11
- Editor jednoty
-
- 2020.3.25f1
- Vstupné systémové balíky
-
- 1.2.0
Predpoklady pre tento tip
Nasledujúce nastavenia sú vopred nakonfigurované ako predpoklad na vysvetlenie týchto tipov.
O zmene obrázka sprite
Ako môžete vidieť pri hraní 2D hry, často uvidíte scénu, kde sa obraz nastavený ako sprite prepína uprostred. Napríklad dvere sú najprv zatvorené, ale ich otvorením sa zobrazia ako otvorené dvere.
Aby ste to dosiahli, môžete pripraviť dva objekty, zatvorené dvere a otvorené dvere, a ukázať alebo skryť ich. Tu sa to pokúsime dosiahnuť prepnutím obrazu sprite.
Pridávanie a umiestňovanie obrázkov do projektu
Tentokrát potrebujete obrázok pred zmenou a obrázok po zmene, preto si pripravte dva.
Tu UnityTips
UnityTipsChange
je názov súboru , resp.
Odhoďte sprite z projektu a umiestnite ho. Po kliknutí na tlačidlo sa obrázok zmení, preto ho umiestnite z používateľského rozhrania.
Vytvorenie skriptu na zmenu obrázka
Vytvorte skript. Názov je ľubovoľný, ale v tomto prípade SpriteChange
je to .
Tentoraz kliknite na tlačidlo tak, aby sa obrázok sprite zmenil v čase. Sprite, ktorý sa má zmeniť, bude tiež nastavený vopred. Ak ho zmeníte, môžete dynamicky vytvárať a konfigurovať zložené položky. Spôsob, ako to zmeniť, je v podstate rovnaký.
Skript vyzerá takto:
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;
}
}
V poli pripravte sprite, objekt, ktorý sa má zmeniť, a sprite, ktorý bude obrazom po zmene.
GameObject
Môžete vidieť, že môžete nastaviť cieľový objekt z hierarchie.
Sprite
Môže to byť otázka, čo nastaviť .
Preto si myslím, že "typ textúry" obrazového súboru pridaného do projektu je predvolene "Sprite (2D a UI)", takže ho možno automaticky považovať za sprite. Takže s ním môžete zaobchádzať ako so sprite jednoduchým nastavením obrazového súboru.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Očakáva sa, že metóda sa vyvolá po kliknutí na tlačidlo. Názov metódy je ľubovoľný.
OnClick
V metóde prepíname obraz.
Keďže je ten, ktorý má SpriteRenderer
informácie o obrázku, dostaneme komponent z SpriteRenderer
GameObject.
SpriteRenderer
Trieda má vlastnosť, v ktorej môžete obrázok vymeniť nastavením na sprite, ktorý má sprite
nový obrázok.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Po uložení skriptu ho priložte k objektu. Predmet, ktorý sa má pripojiť, je voliteľný, ale v tomto prípade EventSystem
je pripojený k .
Keďže existujú parametre "Target Sprite" a "Next Sprite", "Target Sprite" má sprite objekty z hierarchie,
"Next Sprite" je nastavený na zmenený obrazový súbor z projektu.
Zadajte metódu zo OnClick
skriptu pripojeného k udalosti EventSystem
kliknutia tlačidla .
Spustite hru a skúste stlačiť tlačidlo. Ak sa obrázok zmení, je to úspech.