Unity事例ノート

UNITY

インスタンス化したクラスを呼び出す

他のオブジェクトにあるスクリプトを実行するには、GetComponentを使う方法があります。

【Unity C#】他のスクリプトの関数を実行する

今回はクラスをインスタンス化して、そこにアクセスする方法を試してみましょう。

関連記事:
他のスクリプトの変数を取得する
他のスクリプトの関数を実行する
他のスクリプトのBoolを取得する

キューブをクリックすると、ボールが出現する動きをつくってみます。

PlaneとCube、GameObject(空のオブジェクト)を用意します。

SphereのPrefabを作成して、リジッドボディを付けておきます

instanceを使う

BallDrop.csを作成し、GamaObject(空のオブジェクト)に追加します。

BallDrop.csは以下のように書きました。

Awake()は、Start()よりも前に、スクリプトのインスタンスがロードされたときに呼び出されます。

「NullReferenceException: Object reference not set to an instance of an object」というエラーを回避するため、Nullであれば、BallDropをインスタンスとして参照するようにしています。

GameObjectのインスペクターを確認すると、Ball項目が出来ています。

ここにはSphereのPrefabデータを入れておきます。

以上でボールを生成する(アクセスされる)側のスクリプトは完成しました。

staticクラスにアクセスする

続いて、Cubeのほうのスクリプトをつくりましょう。

CubeClice.csを作成して、Cubeに追加します。

スクリプトは以下のように書きました。

プレイして動きを見ましょう。

クラスを静的なものとして固定し、ここへアクセスする方法。

instanceの使用例として紹介しました。

関連記事:
他のスクリプトの変数を取得する
他のスクリプトの関数を実行する
他のスクリプトのBoolを取得する