Unity에서 다양한 구성요소의 변수 및 함수에 액세스
Unity에서는 다른 스크립트의 변수와 함수에 액세스하는 것이 매우 일반적입니다. 기본적으로 스크립트의 변수와 함수는 비공개이며 스크립트 외부에서 액세스할 수 없습니다. 다른 스크립트가 액세스할 수 있도록 하려면 공개해야 합니다.
예를 들어 각각 고유한 스크립트(Character_Stats 및 Enemy_Stats)가 있는 플레이어와 적이 포함된 장면을 생각해 보세요. 이 경우 Character_Stats 스크립트에서 Enemy_Stats 스크립트의 Health 변수에 액세스하려면 다음 코드에 표시된 대로 해결 방법이 필요합니다.
<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>
변수와 함수를 공개로 설정
이 해결 방법을 피하려면 Health 변수와 다른 스크립트에서 액세스하려는 모든 기능을 공개로 만드세요. 방법은 다음과 같습니다.
<code class="language-c#">public class Enemy_Stats : MonoBehaviour { public float Health; void Start() { } public void TakeDamage(float damage) { Health -= damage; } }</code>
공용 변수 및 함수에 액세스
이제 Find 및 GetComponent 함수를 사용하여 다른 스크립트에서 Health 변수에 액세스하고 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>
변수와 함수를 공개하면 다른 스크립트에서 쉽게 액세스하고 조작할 수 있어 Unity 프로젝트에 소요되는 시간과 노력을 절약할 수 있습니다.
위 내용은 다양한 Unity 구성 요소의 변수 및 함수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!