Άλλαξε την εικόνα του αντικειμένου ενώ το παιχνίδι εκτελείται

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον επαλήθευσης

παράθυρα
  • Παράθυρα 11
Επεξεργαστής ενότητας
  • 2020.3.25στ1
Πακέτα συστήματος εισόδου
  • 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 αυτή , επισυνάπτεται στο . Δεδομένου ότι υπάρχουν "Target Sprite" και "Next Sprite" ως παράμετροι, το "Target Sprite" έχει αντικείμενα sprite από την ιεραρχία, Το "Next Sprite" έχει οριστεί στο αλλαγμένο αρχείο εικόνας από το έργο.

Καθορίστε τη μέθοδο από OnClick τη δέσμη ενεργειών που επισυνάπτεται στο συμβάν EventSystem κλικ του κουμπιού .

Εκτελέστε το παιχνίδι και προσπαθήστε να πατήσετε το κουμπί. Εάν η εικόνα αλλάξει, είναι επιτυχία.