Heim > Backend-Entwicklung > C++ > Wie greife ich auf Variablen und Funktionen verschiedener Unity-Komponenten zu?

Wie greife ich auf Variablen und Funktionen verschiedener Unity-Komponenten zu?

Barbara Streisand
Freigeben: 2025-01-18 06:12:14
Original
804 Leute haben es durchsucht

How to Access Variables and Functions from Different Unity Components?

Zugriff auf Variablen und Funktionen verschiedener Komponenten in Unity

In Unity ist der Zugriff auf Variablen und Funktionen in anderen Skripten ein sehr häufiges Bedürfnis. Standardmäßig sind Variablen und Funktionen in einem Skript privat und können nicht von außerhalb des Skripts aufgerufen werden. Damit andere Skripte darauf zugreifen können, müssen sie öffentlich gemacht werden.

Stellen Sie sich zum Beispiel eine Szene vor, die einen Spieler und einen Feind enthält, jeweils mit einem eigenen Skript (Character_Stats und Enemy_Stats). In diesem Fall erfordert der Zugriff auf die Health-Variable des Enemy_Stats-Skripts über das Character_Stats-Skript eine Problemumgehung, wie im folgenden Code gezeigt:

<code class="language-c#">void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.tag == "Enemy")
    {
        collision.gameObject.GetComponent<enemy_stats>().Health = 
            collision.gameObject.GetComponent<enemy_stats>().Health 
            - gameObject.GetComponent<character_stats>().AttackDamage;

        if (collision.gameObject.GetComponent<enemy_stats>().Health < 0)
        {
            Destroy(collision.gameObject);
        }
    }
}</code>
Nach dem Login kopieren

Variablen und Funktionen öffentlich machen

Um diesen Workaround zu vermeiden, machen Sie die Health-Variable und alle Funktionen, auf die Sie von anderen Skripten aus zugreifen möchten, öffentlich. So geht's:

<code class="language-c#">public class Enemy_Stats : MonoBehaviour
{
    public float Health;

    void Start()
    {

    }

    public void TakeDamage(float damage)
    {
        Health -= damage;
    }
}</code>
Nach dem Login kopieren

Zugriff auf öffentliche Variablen und Funktionen

Sie können jetzt von einem anderen Skript aus mit den Funktionen „Find“ und „GetComponent“ auf die Variable „Health“ zugreifen und die Funktion „TakeDamage“ aufrufen:

<code class="language-c#">public class Character_Stats : MonoBehaviour
{
    GameObject enemyObj;
    Enemy_Stats enemyStats;

    void Start()
    {
        enemyObj = GameObject.Find("EnemyGameObject");
        enemyStats = enemyObj.GetComponent<Enemy_Stats>();
    }

    void AttackEnemy()
    {
        enemyStats.TakeDamage(AttackDamage);

        if (enemyStats.Health <= 0)
        {
            Destroy(enemyObj);
        }
    }
}</code>
Nach dem Login kopieren

Indem Sie Variablen und Funktionen öffentlich machen, können Sie von anderen Skripten aus einfach auf sie zugreifen und sie bearbeiten, was Zeit und Aufwand in Ihrem Unity-Projekt spart.

Das obige ist der detaillierte Inhalt vonWie greife ich auf Variablen und Funktionen verschiedener Unity-Komponenten zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage