Maison >développement back-end >C++ >Comment accéder aux variables et fonctions de différents composants Unity ?
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!