Muutke spraidi pilti mängu töötamise ajal
Kontrollimise keskkond
- Windows
-
- Windows 11
- Ühtsuse toimetaja
-
- 2020.3.25f1
- Sisendsüsteemi paketid
-
- 1.2.0
Selle näpunäite eeltingimused
Järgmised sätted on eelkonfigureeritud nende näpunäidete selgitamise eeltingimusena.
Spraidi kujutise muutmise kohta
Nagu näete 2D-mängu mängides, näete sageli stseeni, kus spraidina seatud pilt lülitub keskele. Näiteks on uks alguses suletud, kuid selle avamisel kuvatakse see avatud uksena.
Selle saavutamiseks saate valmistada kaks objekti, suletud ukse ja avatud ukse ning näidata või peita neid. Siin püüame seda saavutada, vahetades spraidi pilti.
Piltide lisamine ja paigutamine projekti
Seekord vajate pilti enne muudatust ja pilti pärast muudatust, nii et palun valmistage ette kaks.
UnityTips
UnityTipsChange
Siin on faili nimi vastavalt.
Pange sprait projektist välja ja asetage see. Nupu klõpsamisel pilt muutub, seega asetage nupp kasutajaliidesest.
Tõmmise muutmise skripti loomine
Skripti loomine. Nimi on meelevaldne, kuid antud juhul SpriteChange
, see on .
Seekord klõpsake nuppu nii, et spraidi pilt muutub ajastusel. Samuti määratakse eelnevalt muudetav sprait. Kui muudate seda, saate spraite dünaamiliselt luua ja konfigureerida. Selle muutmise viis on põhimõtteliselt sama.
Skript näeb välja selline:
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;
}
}
Põllul valmistage ette sprait, muudetav objekt ja sprait, mis on pärast muudatust pilt.
GameObject
Näete, et saate sihtobjekti hierarhiast seada.
Sprite
Küsimus võib olla selles, mida sisse seada .
Selleks arvan, et projektile lisatud pildifaili "tekstuuritüüp" on vaikimisi "Sprite (2D ja UI)", nii et seda saab automaatselt käsitleda spraidina. Nii saate seda käsitleda spraidina lihtsalt pildifaili seadistamisega.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Eeldatakse, et meetod helistatakse nupu klõpsamisel. Meetodi nimi on meelevaldne.
OnClick
Meetodis vahetame pilti.
Kuna see on see, millel on SpriteRenderer
pilditeave, saame komponendi GameObjectist SpriteRenderer
.
SpriteRenderer
Klassil on omadus, kus saate pilti vahetada, seades selle spraidiks, millel on sprite
uus pilt.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Pärast skripti salvestamist lisage see objektile. Kinnitatav objekt on valikuline, kuid sel juhul EventSystem
on see seotud .
Kuna parameetritena on "Target Sprite" ja "Next Sprite", on "Target Sprite" hierarhiast spraidiobjektid,
"Next Sprite" on seatud projekti muudetud pildifailile.
Määrake meetod nupu klõpsamissündmusele EventSystem
lisatud skriptist OnClick
.
Käivitage mäng ja proovige nuppu vajutada. Kui pilt muutub, on see edukas.