Změna obrázku sprajtu za běhu hry
Ověřovací prostředí
- Windows
-
- Systém Windows 11
- Unity Editor
-
- 2020.3.25f1
- Balíčky vstupního systému
-
- 1.2.0
Předpoklady pro tento tip
Následující nastavení jsou předem nakonfigurovaná jako předpoklad pro vysvětlení těchto tipů.
O změně obrázku sprajtu
Jak můžete vidět při hraní 2D hry, často uvidíte scénu, kde se obrázek nastavený jako sprajt přepne uprostřed. Například dveře jsou nejprve zavřené, ale jejich otevřením se zobrazí jako otevřené dveře.
Chcete-li toho dosáhnout, můžete připravit dva objekty, zavřené dveře a otevřené dveře, a zobrazit je nebo skrýt. Zde se toho pokusíme dosáhnout přepnutím obrazu sprajtu.
Přidávání a umísťování obrázků do projektu
Tentokrát potřebujete obrázek před změnou a obrázek po změně, proto si prosím připravte dva.
UnityTips
UnityTipsChange
Zde je název souboru , resp.
Pusťte sprajt z projektu a umístěte ho. Po kliknutí na tlačítko se obrázek změní, takže umístěte tlačítko z uživatelského rozhraní.
Vytvoření skriptu pro změnu obrázku
Vytvořte skript. Název je libovolný, ale v tomto případě SpriteChange
je .
Tentokrát klikněte na tlačítko, aby se obraz sprajtu změnil v načasování. Také sprajt, který se má změnit, bude nastaven předem. Pokud ji změníte, můžete vytvářet a konfigurovat sprajty dynamicky. Způsob, jak to změnit, je v podstatě stejný.
Skript vypadá 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 si připravte sprajt, předmět, který chcete změnit, a sprajta, který bude po změně obrázkem.
GameObject
Vidíte, že můžete nastavit cílový objekt z hierarchie.
Sprite
Může to být otázka, co nastavit v .
Z tohoto důvodu si myslím, že "typ textury" obrazového souboru přidaného do projektu je ve výchozím nastavení "Sprite (2D a UI)", takže s ním lze automaticky zacházet jako se sprajtem. Můžete s ním tedy zacházet jako se spritem, a to pouhým nastavením souboru obrázku.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Očekává se, že metoda bude volána při kliknutí na tlačítko. Název metody je libovolný.
OnClick
V metodě přepínáme obraz.
Vzhledem k tomu, že je ten, který má SpriteRenderer
informace o obrázku, získáme komponentu z SpriteRenderer
GameObject.
SpriteRenderer
Třída má vlastnost, kde můžete obrázek zaměnit nastavením na sprajt, který má sprite
nový obrázek.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Po uložení skript připojte k objektu. Objekt, který má být připojen, je volitelný, ale v tomto případě EventSystem
je připojen k .
Vzhledem k tomu, že parametry jsou "Target Sprite" a "Next Sprite", "Target Sprite" má sprite objekty z hierarchie,
"Další Sprite" je nastaven na změněný obrazový soubor z projektu.
Určete metodu ze OnClick
skriptu připojeného k události EventSystem
kliknutí tlačítka.
Spusťte hru a zkuste stisknout tlačítko. Pokud se obraz změní, je to úspěch.