שינוי תמונת הספרייט בזמן שהמשחק פועל
סביבת אימות
- חלונות
-
- חלונות 11
- עורך Unity
-
- 2020.3.25F1
- חבילות מערכת קלט
-
- 1.2.0
תנאים מוקדמים לטיפ זה
ההגדרות הבאות מוגדרות מראש כתנאי מוקדם להסבר של עצות אלה.
על שינוי התמונה של ספרייט
כפי שניתן לראות בעת משחק דו-ממדי, לעתים קרובות תראה סצנה שבה התמונה המוגדרת כספרייט מתחלפת באמצע. לדוגמה, הדלת סגורה בהתחלה, אך על ידי פתיחתה, היא מוצגת כדלת פתוחה.
כדי להשיג זאת, אתה יכול להכין שני אובייקטים, דלת סגורה ודלת פתוחה, ולהראות או להסתיר אותם. כאן, ננסה להשיג זאת על ידי החלפת התמונה של ספרייט.
הוספה ומיקום של תמונות בפרוייקט
הפעם, אתם צריכים תמונה לפני השינוי ותמונה אחרי השינוי, אז אנא הכינו שתיים.
כאן, שם הקובץ UnityTips
UnityTipsChange
הוא , בהתאמה.
שחררו את הספרייט מהפרויקט והניחו אותו. בעת לחיצה על הלחצן, התמונה משתנה, לכן מקם את הלחצן מממשק המשתמש.
יצירת סקריפט לשינוי תמונה
צור קובץ Script. השם הוא שרירותי, אבל במקרה SpriteChange
זה , הוא .
הפעם, לחץ על הכפתור כך שתמונת הספרייט תשתנה בתזמון. כמו כן, הספרייט שיוחלף ייקבע מראש. אם תשנה אותו, תוכל ליצור ולהגדיר שדונים באופן דינמי. הדרך לשנות את זה היא בעצם זהה.
הסקריפט נראה כך:
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;
}
}
בשטח, הכינו את הספרייט, את האובייקט שיש לשנות ואת הספרייט שיהיה התמונה לאחר השינוי.
GameObject
ניתן לראות שניתן להגדיר את אובייקט היעד מההיררכיה.
Sprite
זו יכולה להיות שאלה של מה להגדיר .
לשם כך, אני חושב כי "סוג מרקם" של קובץ התמונה נוסף לפרויקט הוא "ספרייט (2D ו- UI)" כברירת מחדל, כך שניתן להתייחס אליו באופן אוטומטי כספרייט. אז אתה יכול להתייחס אליו כמו ספרייט רק על ידי הגדרת קובץ התמונה.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
השיטה צפויה להיקרא בעת לחיצה על הלחצן. שם השיטה שרירותי.
OnClick
בשיטה, אנחנו מחליפים את התמונה.
מאז הוא אחד שיש לו SpriteRenderer
את המידע התמונה, אנו מקבלים את הרכיב מן SpriteRenderer
GameObject.
SpriteRenderer
המחלקה כוללת מאפיין שבו ניתן להחליף את התמונה על-ידי הגדרתה לספרייט הכולל sprite
תמונה חדשה.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
לאחר שמירת הסקריפט, צרף אותו לאובייקט. האובייקט שיש לצרף הוא אופציונלי, אך במקרה EventSystem
זה , הוא מחובר ל- .
מכיוון שיש "ספרייט מטרגט" ו"ספרייט הבא" כפרמטרים, ל"ספרייט טרגט" יש אובייקטים של ספרייט מההיררכיה,
"Next Sprite" מוגדר לקובץ התמונה שהשתנה מהפרויקט.
ציין את השיטה מהסקריפט OnClick
המצורף לאירוע EventSystem
הלחיצה של הלחצן .
הפעל את המשחק ונסה ללחוץ על הכפתור. אם התמונה משתנה, זו הצלחה.