Spreminjanje slike grafičnega grafa med izvajanjem igre
Okolje za preverjanje
- Windows
-
- Windows 11
- Urejevalnik Unity
-
- 2020.3.25F1
- Paketi vhodnih sistemov
-
- 1.2.0
Predpogoji za ta nasvet
Naslednje nastavitve so vnaprej konfigurirane kot predpogoj za razlago teh nasvetov.
O spreminjanju podobe duhovnika
Kot lahko vidite pri igranju 2D igre, boste pogosto videli prizor, kjer se slika, nastavljena kot sprite, preklopi na sredini. Na primer, vrata so sprva zaprta, toda z odpiranjem se prikažejo kot odprta vrata.
Da bi to dosegli, lahko pripravite dva predmeta, zaprta vrata in odprta vrata ter jih pokažete ali skrijete. Tu ga bomo poskušali doseči s preklopom podobe duhovnika.
Dodajanje in umeščanje slik v projekt
Tokrat potrebujete sliko pred spremembo in sliko po spremembi, zato vas prosimo, da pripravite dve.
Tu UnityTips
UnityTipsChange
je ime datoteke , oziroma.
Spustite duhovnika iz projekta in ga postavite. Ko kliknete gumb, se slika spremeni, zato postavite gumb iz uporabniškega vmesnika.
Ustvarjanje skripta za spremembo slike
Ustvarite skript. Ime je poljubno, vendar je v tem primeru SpriteChange
.
Tokrat kliknite gumb, tako da se slika sprite spremeni ob času. Tudi duhovnik, ki ga je treba spremeniti, bo vnaprej določen. Če ga spremenite, lahko dinamično ustvarjate in konfigurirate grafične grafike. Način, kako ga spremeniti, je v bistvu enak.
Scenarij izgleda takole:
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;
}
}
Na terenu pripravite duhovnika, predmet, ki ga želite spremeniti, in duhovnika, ki bo slika po spremembi.
GameObject
Vidite lahko, da lahko nastavite ciljni predmet iz hierarhije.
Sprite
Lahko gre za vprašanje, kaj nastaviti .
Za to mislim, da je "vrsta teksture" slikovne datoteke, dodane projektu, privzeto "Sprite (2D in UI)", zato jo je mogoče samodejno obravnavati kot sprite. Tako ga lahko obravnavate kot sprite samo z nastavitvijo slikovne datoteke.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Pričakuje se, da bo metoda poklicana, ko kliknete gumb. Ime metode je poljubno.
OnClick
Pri metodi preklapljamo sliko.
Ker je tisti, ki ima SpriteRenderer
slikovne informacije, dobimo komponento SpriteRenderer
iz GameObject.
SpriteRenderer
Razred ima lastnost, kjer lahko zamenjate sliko tako, da jo nastavite na sprite, ki ima sprite
novo sliko.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Ko shranite skript, ga priložite predmetu. Predmet, ki ga je treba pritrditi, ni obvezen, vendar je v tem primeru EventSystem
pritrjen na .
Ker kot parametra obstajata "Target Sprite" in "Next Sprite", ima "Target Sprite" predmete iz hierarhije,
"Next Sprite" je nastavljen na spremenjeno slikovno datoteko iz projekta.
Določite način iz OnClick
skripta, priloženega dogodku EventSystem
klika gumba .
Zaženite igro in poskusite pritisniti gumb. Če se slika spremeni, je uspešna.