Sprite-kuvan vaihtaminen pelin ollessa käynnissä
Varmennusympäristö
- Windows
-
- Windows 11
- Unity-editori
-
- 2020.3.25F1
- Syöttöjärjestelmän paketit
-
- 1.2.0
Tämän vinkin edellytykset
Seuraavat asetukset on määritetty valmiiksi näiden vihjeiden selityksen edellytykseksi.
Tietoja spriten kuvan muuttamisesta
Kuten näet pelatessasi 2D-peliä, näet usein kohtauksen, jossa sprite-kuvaksi asetettu kuva vaihtuu keskellä. Esimerkiksi ovi suljetaan aluksi, mutta avaamalla se näkyy avoimena ovena.
Tämän saavuttamiseksi voit valmistaa kaksi esinettä, suljetun oven ja avoimen oven, ja näyttää tai piilottaa ne. Tässä yritämme saavuttaa sen vaihtamalla spriten kuvaa.
Kuvien lisääminen ja sijoittaminen projektiin
Tällä kertaa tarvitset kuvan ennen muutosta ja kuvan muutoksen jälkeen, joten valmistele kaksi.
UnityTips
UnityTipsChange
Tässä tiedostonimi on , vastaavasti.
Pudota sprite projektista ja aseta se. Kun painiketta napsautetaan, kuva muuttuu, joten aseta painike käyttöliittymästä.
Kuvanvaihtoskriptin luominen
Luo komentosarja. Nimi on mielivaltainen, mutta tässä tapauksessa SpriteChange
se on .
Napsauta tällä kertaa painiketta, jotta spriten kuva muuttuu ajoituksen mukaan. Myös vaihdettava sprite asetetaan etukäteen. Jos muutat sitä, voit luoda ja määrittää spritejä dynaamisesti. Tapa muuttaa sitä on periaatteessa sama.
Skripti näyttää tältä:
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;
}
}
Valmistele kentässä sprite, muutettava objekti ja sprite, joka on kuva muutoksen jälkeen.
GameObject
Näet, että voit määrittää kohdeobjektin hierarkiasta.
Sprite
Kyse voi olla siitä, mitä asettaa .
Tätä varten mielestäni projektiin lisätyn kuvatiedoston "tekstuurityyppi" on oletuksena "Sprite (2D ja UI)", joten sitä voidaan käsitellä automaattisesti spritenä. Joten voit käsitellä sitä spritenä vain asettamalla kuvatiedoston.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Menetelmän odotetaan kutsuvan, kun painiketta napsautetaan. Menetelmän nimi on mielivaltainen.
OnClick
Menetelmässä vaihdamme kuvaa.
Koska on se, jolla on SpriteRenderer
kuvatiedot, saamme komponentin GameObjectista SpriteRenderer
.
SpriteRenderer
Luokalla on ominaisuus, jossa voit vaihtaa kuvan asettamalla sen hahmoksi, jolla on sprite
uusi kuva.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Kun olet tallentanut komentosarjan, liitä se objektiin. Liitettävä objekti on valinnainen, mutta tässä tapauksessa EventSystem
se liitetään .
Koska parametreina on "Target Sprite" ja "Next Sprite", "Target Sprite" sisältää sprite-objekteja hierarkiasta,
"Seuraava Sprite" on asetettu projektin muuttuneeseen kuvatiedostoon.
Määritä menetelmä painikkeen napsautustapahtumaan EventSystem
liitetystä komentosarjasta OnClick
.
Suorita peli ja yritä painaa painiketta. Jos kuva muuttuu, se on menestys.