تغيير صورة الكائن أثناء تشغيل اللعبة

تحديث الصفحة :
تاريخ إنشاء الصفحة :

بيئة التحقق

نوافذ
  • ويندوز ١١
محرر الوحدة
  • 2020.3.25f1
حزم نظام الإدخال
  • 1.2.0

المتطلبات الأساسية لهذه النصيحة

يتم تكوين الإعدادات التالية مسبقا كشرط أساسي لشرح هذه النصائح.

حول تغيير صورة كائن

كما ترى عند لعب لعبة 2D ، سترى غالبا مشهدا حيث يتم تعيين الصورة ككائن في المنتصف. على سبيل المثال ، يتم إغلاق الباب في البداية ، ولكن من خلال فتحه ، يتم عرضه كباب مفتوح.

لتحقيق ذلك ، يمكنك إعداد كائنين ، باب مغلق وباب مفتوح ، وإظهارهما أو إخفائهما. هنا ، سنحاول تحقيق ذلك عن طريق تبديل صورة الكائن.

إضافة الصور ووضعها في مشروع

هذه المرة ، تحتاج إلى صورة قبل التغيير وصورة بعد التغيير ، لذا يرجى إعداد صورتين. هنا ، اسم الملف هو ، UnityTipsUnityTipsChange على التوالي.

قم بإسقاط الكائن من المشروع وضعه. عند النقر فوق الزر ، تتغير الصورة ، لذا ضع الزر من واجهة المستخدم.

إنشاء برنامج نصي لتغيير الصورة

إنشاء برنامج نصي. الاسم تعسفي ، لكن في هذه الحالة 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 قد يكون السؤال عن ما يجب تعيينه .

لهذا ، أعتقد أن "نوع النسيج" لملف الصورة المضاف إلى المشروع هو "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 ، يتم إرفاقه ب . نظرا لوجود "الكائن المستهدف" و "الكائن التالي" كمعلمات ، فإن "الكائن المستهدف" يحتوي على كائنات كائن من التسلسل الهرمي ، يتم تعيين "الكائن التالي" على ملف الصورة الذي تم تغييره من المشروع.

حدد الطريقة من OnClick البرنامج النصي المرفق بحدث EventSystem نقرة الزر .

قم بتشغيل اللعبة وحاول الضغط على الزر. إذا تغيرت الصورة ، فهذا نجاح.