Skift sprite-billedet, mens spillet kører
Miljø til bekræftelse
- Windows
-
- Windows 11
- Enhedslistens redaktør
-
- 2020.3.25f1
- Input System Pakker
-
- 1.2.0
Forudsætninger for dette tip
Følgende indstillinger er forudkonfigureret som en forudsætning for forklaringen af disse tip.
Om ændring af billedet af en sprite
Som du kan se, når du spiller et 2D-spil, vil du ofte se en scene, hvor billedet indstillet som en sprite skifter i midten. For eksempel lukkes døren først, men ved at åbne den vises den som en åben dør.
For at opnå dette kan du forberede to objekter, en lukket dør og en åben dør, og vise eller skjule dem. Her vil vi forsøge at opnå det ved at skifte billedet af sprite.
Tilføje og placere billeder i et projekt
Denne gang har du brug for et billede før ændringen og et billede efter ændringen, så forbered venligst to.
Her er filnavnet UnityTips
UnityTipsChange
henholdsvis .
Slip spriten fra projektet, og placer den. Når der klikkes på knappen, ændres billedet, så placer knappen fra brugergrænsefladen.
Oprettelse af et billedændringsscript
Opret et script. Navnet er vilkårligt, men i dette tilfælde SpriteChange
er det .
Denne gang skal du klikke på knappen, så billedet af sprite ændres på tidspunktet. Den sprite, der skal ændres, indstilles også på forhånd. Hvis du ændrer det, kan du oprette og konfigurere sprites dynamisk. Måden at ændre det på er stort set den samme.
Scriptet ser sådan ud:
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;
}
}
I marken skal du forberede sprite, objektet, der skal ændres, og sprite, der vil være billedet efter ændringen.
GameObject
Du kan se, at du kan indstille målobjektet fra hierarkiet.
Sprite
Det kan være et spørgsmål om, hvad man skal sætte ind .
Til dette tror jeg, at "teksturtypen" af billedfilen, der er tilføjet til projektet, som standard er "Sprite (2D og UI)", så den automatisk kan behandles som en sprite. Så du kan behandle det som en sprite bare ved at indstille billedfilen.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
Metoden forventes at blive kaldt, når der klikkes på knappen. Metodenavnet er vilkårligt.
OnClick
I metoden skifter vi billedet.
Da er den, der har SpriteRenderer
billedoplysningerne, får vi komponenten fra SpriteRenderer
GameObject.
SpriteRenderer
Klassen har en egenskab, hvor du kan bytte billedet ved at indstille det til en sprite, der har et sprite
nyt billede.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Når du har gemt scriptet, skal du vedhæfte det til objektet. Objektet, der skal vedhæftes, er valgfrit, men i dette tilfælde EventSystem
er det knyttet til .
Da der er "Target Sprite" og "Next Sprite" som parametre, har "Target Sprite" sprite-objekter fra hierarkiet,
"Next Sprite" er indstillet til den ændrede billedfil fra projektet.
Angiv metoden fra OnClick
det script, der er knyttet til knappens klikhændelse EventSystem
.
Kør spillet og prøv at trykke på knappen. Hvis billedet ændrer sig, er det en succes.