Unity では、ゲーム オブジェクトにアタッチされたコンポーネントがさまざまなメカニズムを通じて通信し、相互作用します。変数にアクセスしたり、さまざまなコンポーネント スクリプトで関数を呼び出したりする場合は、考慮すべきベスト プラクティスと制限がいくつかあります。
他のコンポーネントから変数または関数にアクセスするには、スクリプト内で public として宣言する必要があります。これは、シーン内の他のゲーム オブジェクトにアタッチされたスクリプトからこれらの変数または関数にアクセスできることを意味します。対照的に、プライベート変数または関数は、それが定義されているスクリプト内でのみアクセスできます。
コンポーネントの変数にアクセスしたり、別のスクリプトからその関数を呼び出したりするには、通常、GetComponent
関数を使用します。この関数は、取得するコンポーネントのタイプである Type
タイプのパラメータを受け取ります。
次の例は、GetComponent
関数にアクセスする方法を示しています。
<code class="language-c#">GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo"); ScriptA scriptInstance = tempObj.GetComponent<ScriptA>();</code>この例では、
関数は「NameOfGameObjectScriptAIsAttachedTo」という名前のゲーム オブジェクトを取得し (そのオブジェクトに ScriptA がアタッチされていると仮定します)、次に GameObject.Find
関数を使用して ScriptA コンポーネントへの参照を取得します。 GetComponent
と関数 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>この例では、
オブジェクトには、「NameOfGameObjectScriptAIsAttachedTo」という名前のゲーム オブジェクトにアタッチされた scriptAInstance
コンポーネントへの参照が割り当てられます。この参照を取得すると、ScriptA
コンポーネントからパブリック Enemy
変数にアクセスし、パブリック playerScore
関数を呼び出すことができます。 doSomething
が追加されていることに注意してください。 if (scriptAInstance != null)
以上がUnity のさまざまなコンポーネント間で変数や関数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。