Unity에서는 게임 개체에 연결된 구성 요소가 다양한 메커니즘을 통해 통신하고 상호 작용합니다. 다양한 구성 요소 스크립트에서 변수에 액세스하거나 함수를 호출할 때 고려해야 할 몇 가지 모범 사례와 제한 사항이 있습니다.
다른 구성 요소에서 변수나 함수에 액세스하려면 스크립트에서 공개로 선언해야 합니다. 이는 장면의 다른 게임 개체에 연결된 스크립트를 통해 이러한 변수나 함수에 액세스할 수 있음을 의미합니다. 반면, 전용 변수나 함수는 해당 변수가 정의된 스크립트 내에서만 액세스할 수 있습니다.
구성요소의 변수에 액세스하거나 다른 스크립트에서 해당 기능을 호출하려면 일반적으로 GetComponent
함수를 사용합니다. 이 함수는 검색할 구성요소 유형인 Type
유형의 매개변수를 수신합니다.
다음 예에서는 GetComponent
함수에 액세스하는 방법을 보여줍니다.
<code class="language-c#">GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo"); ScriptA scriptInstance = tempObj.GetComponent<ScriptA>();</code>
이 예에서 GameObject.Find
함수는 "NameOfGameObjectScriptAIsAttachedTo"(ScriptA가 해당 개체에 연결되어 있다고 가정)라는 게임 개체를 검색한 다음 GetComponent
함수를 사용하여 ScriptA 구성 요소에 대한 참조를 검색합니다.
다음 시나리오를 고려해보세요. 공개 변수 playerScore
와 함수 doSomething
가 포함된 Player
구성 요소가 있습니다. Enemy
이라는 다른 구성 요소에서 playerScore
변수에 액세스하고 doSomething
함수를 호출하려고 합니다.
Enemy
구성 요소:
<code class="language-c#">public class Enemy : MonoBehaviour { private ScriptA scriptAInstance = null; void Start() { GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo"); scriptAInstance = tempObj.GetComponent<ScriptA>(); } void Update() { if (scriptAInstance != null) { scriptAInstance.playerScore += 1; scriptAInstance.doSomething(); } } }</code>
이 예에서 scriptAInstance
개체에는 "NameOfGameObjectScriptAIsAttachedTo"라는 게임 개체에 연결된 ScriptA
구성 요소에 대한 참조가 할당됩니다. 이 참조가 있으면 Enemy
구성 요소에서 공개 playerScore
변수에 액세스하고 공개 doSomething
함수를 호출할 수 있습니다.
이러한 지침을 따르면 다양한 구성 요소 스크립트의 변수에 효율적으로 액세스하고 함수를 호출하여 Unity 프로젝트에서 복잡한 상호 작용과 기능을 구현할 수 있습니다. null 참조 예외를 방지하기 위해 null 검사 if (scriptAInstance != null)
가 추가되었습니다.
위 내용은 Unity의 다양한 구성 요소에서 변수와 함수에 어떻게 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!