Maison >développement back-end >C++ >Comment accéder aux variables et fonctions de différents composants Unity ?

Comment accéder aux variables et fonctions de différents composants Unity ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-18 06:12:14809parcourir

How to Access Variables and Functions from Different Unity Components?

Accéder aux variables et fonctions des différents composants dans Unity

Dans Unity, accéder aux variables et fonctions dans d'autres scripts est un besoin très courant. Par défaut, les variables et les fonctions d'un script sont privées et ne sont pas accessibles depuis l'extérieur du script. Pour permettre à d'autres scripts d'y accéder, ils doivent être rendus publics.

Par exemple, considérons une scène contenant un joueur et un ennemi, chacun avec son propre script (Character_Stats et Enemy_Stats). Dans ce cas, accéder à la variable Health du script Enemy_Stats depuis le script Character_Stats nécessite une solution de contournement, comme indiqué dans le code suivant :

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

Rendre publiques les variables et les fonctions

Pour éviter cette solution de contournement, rendez publiques la variable Health et toutes les fonctions auxquelles vous souhaitez accéder à partir d'autres scripts. Voici comment procéder :

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

    void Start()
    {

    }

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

Accéder aux variables et fonctions publiques

Vous pouvez désormais accéder à la variable Health depuis un autre script en utilisant les fonctions Find et GetComponent et appeler la fonction TakeDamage :

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

En rendant les variables et les fonctions publiques, vous pouvez facilement y accéder et les manipuler à partir d'autres scripts, économisant ainsi du temps et des efforts dans votre projet Unity.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn