Змінюйте зображення спрайту під час гри

Сторінка оновлюється :
Дата створення сторінки :

Середовище верифікації

Вікна
  • Вікна 11
Редактор Unity
  • 2020.3.25f1
Вхідні системні пакети
  • 1.2.0

Передумови для цієї поради

Наведені нижче параметри попередньо налаштовані як обов'язкова умова для пояснення цих порад.

Про зміну образу спрайту

Як ви можете бачити, граючи в 2D-гру, ви часто побачите сцену, де зображення, встановлене як спрайт, перемикається посередині. Наприклад, двері спочатку закриті, але, відкривши її, вона відображається як відкриті двері.

Щоб досягти цього, ви можете підготувати два об'єкти, закриті двері та відкриті двері, і показати або сховати їх. Тут ми спробуємо цього досягти, переключивши образ спрайту.

Додавання та розміщення зображень у проекті

Цього разу вам потрібне зображення до зміни та зображення після неї, тому, будь ласка, підготуйте два. Тут ім'я файлу UnityTipsUnityTipsChange відповідно , .

Викиньте спрайт з проекту і розмістіть його. При натисканні кнопки зображення змінюється, тому розмістіть кнопку з інтерфейсу користувача.

Створення сценарію зміни зображення

Створіть сценарій. Назва умовна, але в даному випадку 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)", тому його можна автоматично розглядати як спрайт. Таким чином, ви можете розглядати його як спрайт, просто встановивши файл зображення.

/// <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 він приєднується до . Оскільки параметрами є "Цільовий спрайт" і "Наступний спрайт", "Цільовий спрайт" має об'єкти спрайтів з ієрархії, "Наступний спрайт" встановлюється на змінений файл зображення з проекту.

Вкажіть метод зі OnClick сценарію, прикріпленого до події EventSystem кліку кнопки .

Запустіть гру і спробуйте натиснути кнопку. Якщо імідж змінюється, це успіх.