Промяна на изображението на спрайт, докато играта се изпълнява
Среда за проверка
- Уиндоус
-
- Прозорци 11
- Редактор на единство
-
- 2020.3.25ф1
- Пакети на входната система
-
- 1.2.0
Предпоставки за този съвет
Следните настройки са предварително конфигурирани като предпоставка за обяснението на тези съвети.
За промяната на образа на спрайт
Както можете да видите, когато играете 2D игра, често ще видите сцена, в която изображението, зададено като спрайт, превключва в средата. Например, вратата първоначално се затваря, но отваряйки я, тя се показва като отворена врата.
За да постигнете това, можете да подготвите два обекта, затворена врата и отворена врата, и да ги покажете или скриете. Тук ще се опитаме да го постигнем, като превключим образа на спрайта.
Добавяне и поставяне на изображения в проект
Този път имате нужда от изображение преди промяната и изображение след промяната, така че моля, подгответе две.
Тук името на UnityTips
UnityTipsChange
файла е , съответно.
Пуснете спрайта от проекта и го поставете. Когато кликнете върху бутона, изображението се променя, така че поставете бутона от потребителския интерфейс.
Създаване на скрипт за промяна на изображение
Създаване на скрипт. Името е произволно, но в този случай 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
GameObject.
SpriteRenderer
Класът има свойство, където можете да размените изображението, като го настроите на спрайт, който има sprite
ново изображение.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
След като запишете скрипта, прикачете го към обекта. Обектът, който трябва да бъде прикачен, не е задължителен, но в този случай EventSystem
той е прикрепен към .
Тъй като има "Target Sprite" и "Next Sprite" като параметри, "Target Sprite" има sprite обекти от йерархията,
"Next Sprite" е настроен на променения файл с изображение от проекта.
Задайте метода от OnClick
скрипта, прикачен към събитието EventSystem
за щракване на бутона .
Стартирайте играта и се опитайте да натиснете бутона. Ако изображението се промени, това е успех.