جب کھیل چل رہا ہو تو اسپرائٹ امیج کو تبدیل کریں
تصدیق کا ماحول
- Windows
-
- ونڈوز 11
- یونٹی ایڈیٹر
-
- 2020.3.25f1
- Input System Packages
-
- 1.2.0
اس ٹوٹکے کے لئے ضروری شرائط
مندرجہ ذیل ترتیبات ان تجاویز کی وضاحت کے لئے ایک شرط کے طور پر پہلے سے تشکیل دی گئی ہیں.
اسپرائٹ کی تصویر کو تبدیل کرنے کے بارے میں
جیسا کہ آپ 2 ڈی گیم کھیلتے وقت دیکھ سکتے ہیں ، آپ کو اکثر ایک منظر نظر آئے گا جہاں اسپرائٹ کے طور پر سیٹ کردہ تصویر درمیان میں سوئچ کرتی ہے۔ مثال کے طور پر، دروازہ پہلے بند کیا جاتا ہے، لیکن اسے کھولنے سے، اسے ایک کھلے دروازے کے طور پر ظاہر کیا جاتا ہے.
اس کو حاصل کرنے کے لئے ، آپ دو اشیاء تیار کرسکتے ہیں ، ایک بند دروازہ اور ایک کھلا دروازہ ، اور انہیں دکھا یا چھپا سکتے ہیں۔ یہاں ، ہم اسپرائٹ کی تصویر کو تبدیل کرکے اسے حاصل کرنے کی کوشش کریں گے۔
کسی پروجیکٹ میں تصاویر شامل کرنا اور رکھنا
اس بار ، آپ کو تبدیلی سے پہلے ایک تصویر اور تبدیلی کے بعد ایک تصویر کی ضرورت ہے ، لہذا براہ کرم دو تیار کریں۔
یہاں ، فائل کا UnityTips
UnityTipsChange
نام بالترتیب ہے۔
پروجیکٹ سے اسپرائٹ کو چھوڑ دیں اور اسے رکھیں۔ جب بٹن پر کلک کیا جاتا ہے تو ، تصویر تبدیل ہوجاتی ہے ، لہذا بٹن کو یو آئی سے رکھیں۔
تصویر تبدیل کرنے کا اسکرپٹ بنانا
اسکرپٹ بنائیں۔ نام من مانی ہے، لیکن اس معاملے 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
یہ ایک سوال ہوسکتا ہے کہ کیا سیٹ کرنا ہے۔
اس کے لئے ، مجھے لگتا ہے کہ پروجیکٹ میں شامل کردہ امیج فائل کی "ساخت کی قسم" پہلے سے طے شدہ طور پر "اسپرائٹ (2 ڈی اور یو آئی)" ہے ، لہذا اسے خود بخود اسپرائٹ کے طور پر سمجھا جاسکتا ہے۔ لہذا آپ صرف امیج فائل سیٹ کرکے اسے اسپرائٹ کے طور پر علاج کرسکتے ہیں۔
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
جب بٹن پر کلک کیا جاتا ہے تو طریقہ کار کو بلایا جانے کی توقع ہے۔ طریقہ کا نام من مانی ہے۔
OnClick
طریقہ کار میں ، ہم تصویر کو تبدیل کر رہے ہیں۔
چونکہ وہ ہے جس میں تصویر کی معلومات ہے SpriteRenderer
، لہذا ہم گیم آبجیکٹ سے جزو حاصل کرتے SpriteRenderer
ہیں۔
SpriteRenderer
کلاس میں ایک پراپرٹی ہے جہاں آپ تصویر کو ایک اسپرائٹ پر سیٹ کرکے تبدیل کرسکتے ہیں جس میں ایک sprite
نئی تصویر ہے۔
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
اسکرپٹ کو محفوظ کرنے کے بعد ، اسے آبجیکٹ سے منسلک کریں۔ منسلک کی جانے والی شے اختیاری ہے ، لیکن اس معاملے EventSystem
میں ، یہ منسلک ہے۔
چونکہ پیرامیٹرز کے طور پر "ٹارگٹ اسپرائٹ" اور "نیکسٹ اسپرائٹ" موجود ہیں ، لہذا "ٹارگٹ اسپرائٹ" میں درجہ بندی سے اسپرائٹ آبجیکٹس موجود ہیں ،
"اگلا اسپرائٹ" پروجیکٹ سے تبدیل شدہ امیج فائل پر سیٹ کیا گیا ہے۔
بٹن کے کلک ایونٹ EventSystem
سے منسلک اسکرپٹ سے OnClick
طریقہ کار کی وضاحت کریں۔
کھیل چلائیں اور بٹن دبانے کی کوشش کریں۔ اگر تصویر تبدیل ہوتی ہے، تو یہ ایک کامیابی ہے.