Oyun çalışırken hareketli grafik görüntüsünü değiştirme

Sayfa güncel :
Sayfa oluşturma tarihi :

Doğrulama ortamı

Windows
  • pencereler 11
Unity Düzenleyicisi
  • 2020.3.25f1
Giriş Sistemi Paketleri
  • 1.2.0

Bu ipucu için önkoşullar

Aşağıdaki ayarlar, bu ipuçlarının açıklanması için bir önkoşul olarak önceden yapılandırılmıştır.

Sprite'ın görüntüsünü değiştirme hakkında

2D bir oyun oynarken görebileceğiniz gibi, genellikle hareketli grafik olarak ayarlanan görüntünün ortada değiştiği bir sahne göreceksiniz. Örneğin, kapı ilk başta kapalıdır, ancak açıldığında açık bir kapı olarak görüntülenir.

Bunu başarmak için, kapalı bir kapı ve bir açık kapı olmak üzere iki nesne hazırlayabilir ve bunları gösterebilir veya gizleyebilirsiniz. Burada, sprite'ın görüntüsünü değiştirerek bunu başarmaya çalışacağız.

Projeye görüntü ekleme ve yerleştirme

Bu sefer, değişiklikten önce bir resme ve değişiklikten sonra bir resme ihtiyacınız var, bu yüzden lütfen iki tane hazırlayın. UnityTipsUnityTipsChange Burada dosya adı sırasıyla 'dir.

Sprite'ı projeden bırakın ve yerleştirin. Düğmeye tıklandığında görüntü değişir, bu nedenle düğmeyi kullanıcı arayüzünden yerleştirin.

Görüntü Değiştirme Komut Dosyası Oluşturma

Bir komut dosyası oluşturun. İsim keyfidir, ancak bu durumda SpriteChange .

Bu sefer, hareketli grafiğin görüntüsünün zamanlamada değişmesi için düğmeye tıklayın. Ayrıca, değiştirilecek hareketli grafik önceden ayarlanacaktır. Değiştirirseniz, hareketli grafikleri dinamik olarak oluşturabilir ve yapılandırabilirsiniz. Bunu değiştirmenin yolu temelde aynıdır.

Komut dosyası şuna benzer:

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;
  }
}

Alanda hareketli grafiği, değiştirilecek nesneyi ve değişiklikten sonra görüntü olacak hareketli grafiği hazırlayın.

GameObject Hedef nesneyi hiyerarşiden ayarlayabileceğinizi görebilirsiniz. Sprite Neyin ayarlanacağı sorusu olabilir.

Bunun için projeye eklenen imaj dosyasının "texture type"ının varsayılan olarak "Sprite (2D and UI)" olduğunu, bu nedenle otomatik olarak sprite olarak ele alınabileceğini düşünüyorum. Böylece sadece görüntü dosyasını ayarlayarak onu bir hareketli grafik olarak değerlendirebilirsiniz.

/// <summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;

/// <summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;

OnClick Düğmeye tıklandığında yöntemin çağrılması beklenir. Yöntem adı isteğe bağlıdır.

OnClick Yöntemde, görüntüyü değiştiriyoruz. Görüntü bilgisine sahip SpriteRenderer olan olduğundan, bileşeni GameObject'ten SpriteRenderer alıyoruz. SpriteRenderer Sınıfı, görüntüyü yeni bir görüntüye sahip hareketli grafik olarak ayarlayarak değiştirebileceğiniz bir sprite özelliğe sahiptir.

// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();

// 省略

// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;

Komut dosyasını kaydettikten sonra nesneye ekleyin. Eklenecek nesne isteğe bağlıdır, ancak bu durumda EventSystem , öğesine eklenir. Parametre olarak "Target Sprite" ve "Next Sprite" bulunduğundan, "Target Sprite" hiyerarşiden sprite nesnelerine sahiptir, "Next Sprite", projeden değiştirilen görüntü dosyasına ayarlanır.

Düğmenin click olayına EventSystem iliştirilmiş komut dosyasından OnClick yöntemi belirtin.

Oyunu çalıştırın ve düğmeye basmayı deneyin. Görüntü değişirse, bu bir başarıdır.