Pakeiskite "sprite" vaizdą, kol žaidimas veikia
Tikrinimo aplinka
- Windows
-
- Langai 11
- "Unity" redaktorius
-
- 2020.3.25f1
- Įvesties sistemos paketai
-
- 1.2.0
Būtinos šio patarimo sąlygos
Toliau nurodyti parametrai yra iš anksto sukonfigūruoti kaip būtina šių patarimų paaiškinimo sąlyga.
Apie "sprite" įvaizdžio keitimą
Kaip matote žaisdami 2D žaidimą, dažnai pamatysite sceną, kurioje vaizdas, nustatytas kaip "sprite", persijungia viduryje. Pavyzdžiui, durys iš pradžių uždaromos, tačiau jas atidarius, jos rodomos kaip atviros durys.
Norėdami tai pasiekti, galite paruošti du objektus, uždarytas duris ir atviras duris ir parodyti arba paslėpti. Čia mes stengsimės tai pasiekti perjungdami "sprite" vaizdą.
Vaizdų pridėjimas ir įdėjimas į projektą
Šį kartą jums reikia vaizdo prieš pakeitimą ir vaizdo po pakeitimo, todėl paruoškite du.
UnityTips
UnityTipsChange
Čia failo pavadinimas yra , atitinkamai.
Išmeskite sprite iš projekto ir padėkite jį. Spustelėjus mygtuką, vaizdas pasikeičia, todėl įdėkite mygtuką iš vartotojo sąsajos.
Vaizdo keitimo scenarijaus kūrimas
Sukurkite scenarijų. Pavadinimas yra savavališkas, bet šiuo atveju SpriteChange
, tai yra .
Šį kartą spustelėkite mygtuką, kad sprite vaizdas pasikeistų laiku. Be to, keičiamas sprite bus nustatytas iš anksto. Jei jį pakeisite, galėsite dinamiškai kurti ir konfigūruoti spritus. Būdas jį pakeisti iš esmės yra tas pats.
Scenarijus atrodo taip:
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;
}
}
Lauke paruoškite "sprite", keičiamą objektą ir "sprite", kuris bus vaizdas po pakeitimo.
GameObject
Matote, kad galite nustatyti tikslinį objektą iš hierarchijos.
Sprite
Tai gali būti klausimas, ką nustatyti .
Dėl to manau, kad prie projekto pridėto vaizdo failo "tekstūros tipas" pagal numatytuosius nustatymus yra "Sprite (2D ir UI)", todėl jį galima automatiškai traktuoti kaip "sprite". Taigi galite jį traktuoti kaip "sprite" tiesiog nustatydami vaizdo failą.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Tikimasi, kad metodas bus iškviestas spustelėjus mygtuką. Metodo pavadinimas yra savavališkas.
OnClick
Taikydami šį metodą, mes perjungiame vaizdą.
Kadangi yra tas, kuris turi SpriteRenderer
vaizdo informaciją, komponentą gauname iš SpriteRenderer
GameObject.
SpriteRenderer
Klasė turi savybę, kurioje galite pakeisti vaizdą nustatydami jį į sprite, kuriame yra sprite
naujas vaizdas.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Įrašę scenarijų, pridėkite jį prie objekto. Pridedamas objektas yra neprivalomas, tačiau šiuo atveju EventSystem
jis pridedamas prie .
Kadangi kaip parametrai yra "Target Sprite" ir "Next Sprite", "Target Sprite" turi sprite objektus iš hierarchijos,
"Kitas Sprite" nustatomas į pakeistą vaizdo failą iš projekto.
Nurodykite metodą iš OnClick
scenarijaus, pridėto prie mygtuko paspaudimo įvykio EventSystem
.
Paleiskite žaidimą ir pabandykite paspausti mygtuką. Jei vaizdas pasikeičia, tai yra sėkmė.