Mainiet sprite attēlu, kamēr spēle darbojas
Verifikācijas vide
- Windows
-
- Operētājsistēmā Windows 11
- Vienotības redaktors
-
- 2020.3.25f1
- Ievades sistēmas pakotnes
-
- 1.2.0
Priekšnoteikumi šim padomam
Tālāk norādītie iestatījumi ir iepriekš konfigurēti kā priekšnosacījums šo padomu skaidrojumam.
Par sprite attēla maiņu
Kā redzat, spēlējot 2D spēli, jūs bieži redzēsiet ainu, kurā attēls, kas iestatīts kā sprite, pārslēdzas vidū. Piemēram, durvis sākumā tiek aizvērtas, bet, atverot tās, tās tiek parādītas kā atvērtas durvis.
Lai to panāktu, varat sagatavot divus objektus, slēgtas durvis un atvērtas durvis, kā arī parādīt vai paslēpt tos. Šeit mēs centīsimies to sasniegt, pārslēdzot sprite attēlu.
Attēlu pievienošana un ievietošana projektā
Šoreiz jums ir nepieciešams attēls pirms izmaiņām un attēls pēc izmaiņām, tāpēc, lūdzu, sagatavojiet divus.
UnityTips
UnityTipsChange
Šeit faila nosaukums ir , attiecīgi.
Nometiet sprite no projekta un novietojiet to. Noklikšķinot uz pogas, attēls mainās, tāpēc novietojiet pogu no lietotāja saskarnes.
Attēla maiņas skripta izveide
Izveidojiet skriptu. Nosaukums ir patvaļīgs, bet šajā gadījumā SpriteChange
– tas ir .
Šoreiz noklikšķiniet uz pogas, lai sprite attēls mainītos laikā. Arī maināmais sprite tiks noteikts iepriekš. Ja to maināt, varat dinamiski izveidot un konfigurēt sprites. Veids, kā to mainīt, būtībā ir vienāds.
Skripts izskatās šādi:
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;
}
}
Laukā sagatavojiet sprite, maināmo objektu un sprite, kas būs attēls pēc izmaiņām.
GameObject
Jūs varat redzēt, ka varat iestatīt mērķa objektu no hierarhijas.
Sprite
Tas var būt jautājums par to, ko sākt .
Šim nolūkam es domāju, ka projektam pievienotā attēla faila "tekstūras tips" pēc noklusējuma ir "Sprite (2D un UI)", tāpēc to var automātiski uzskatīt par sprite. Tātad jūs varat to uzskatīt par sprite, vienkārši iestatot attēla failu.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Paredzams, ka metode tiks izsaukta, kad tiks noklikšķināts uz pogas. Metodes nosaukums ir patvaļīgs.
OnClick
Metodē mēs pārslēdzam attēlu.
Tā kā ir tas, kuram ir SpriteRenderer
attēla informācija, mēs iegūstam komponentu no SpriteRenderer
GameObject.
SpriteRenderer
Klasei ir īpašums, kurā varat apmainīt attēlu, iestatot to uz sprite, kurai ir sprite
jauns attēls.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Pēc skripta saglabāšanas pievienojiet to objektam. Pievienojamais objekts nav obligāts, bet šajā gadījumā EventSystem
, tas ir pievienots .
Tā kā parametri ir "Target Sprite" un "Next Sprite", "Target Sprite" ir sprite objekti no hierarhijas,
"Next Sprite" ir iestatīts uz mainīto attēla failu no projekta.
Norādiet metodi no OnClick
skripta, kas pievienots pogas klikšķa notikumam EventSystem
.
Palaidiet spēli un mēģiniet nospiest pogu. Ja attēls mainās, tas ir panākums.