在遊戲運行時更改精靈圖像
驗證環境
- 窗戶
-
- 窗戶11
- Unity 編輯器
-
- 2020.3.25f1
- 輸入系統包
-
- 1.2.0
此提示的先決條件
以下設置已預先配置為解釋這些提示的先決條件。
關於更改精靈的圖像
正如您在玩 2D 遊戲時所看到的,您經常會看到一個場景,其中設置為精靈的圖像在中間切換。 例如,門一開始是關閉的,但打開它后,它顯示為打開的門。
為此,您可以準備兩個物件,一個關閉的門和一個打開的門,並顯示或隱藏它們。 在這裡,我們將嘗試通過切換精靈的圖像來實現它。
在專案中添加和置入圖像
這一次,您需要更改前的圖像和更改后的圖像,因此請準備兩個。
此處,UnityTips
UnityTipsChange
檔案名分別為 。
從專案中刪除Sprite並放置它。 按兩下該按鈕時,圖像會發生變化,因此請從UI中放置按鈕。
創建圖像更改文稿
創建腳本。 名稱是任意的,但在本例 SpriteChange
中,它是 。
這一次,按兩下按鈕,使精靈的圖像在時間上發生變化。 此外,要更改的精靈將提前設置。 如果更改它,則可以動態創建和配置精靈。 改變它的方法基本是一樣的。
文稿如下所示:
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;
}
}
在欄位中,準備精靈、要更改的物件以及更改后將成為圖像的精靈。
GameObject
您可以看到,您可以從層次結構中設置目標物件。
Sprite
這可能是一個設置什麼的問題。
為此,我認為添加到專案中的圖像檔的「紋理類型」預設為“Sprite(2D 和 UI)”,因此可以自動將其視為 Sprite。 因此,您只需設置圖像檔即可將其視為精靈。
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
按兩下按鈕時應調用該方法。 方法名稱是任意的。
OnClick
在該方法中,我們正在切換圖像。
由於是具有 SpriteRenderer
圖像資訊的元件,因此我們從遊戲對象中獲取元件 SpriteRenderer
。
SpriteRenderer
該類具有一個屬性,您可以在其中通過將圖像設置為具有 sprite
新圖像的精靈來交換圖像。
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
保存文稿后,將其附加到物件。 要附加的物件是可選的,但在本例 EventSystem
中,它被附加到 。
由於有「Target Sprite」和「Next Sprite」作為參數,因此「Target Sprite」具有層次結構中的Sprite物件,
“Next Sprite”設置為專案中更改的圖像檔。
從附加到按鈕的 click 事件 EventSystem
的腳本中 OnClick
指定方法。
運行遊戲並嘗試按下按鈕。 如果圖像發生變化,則表示成功。