【Unity】スクリプトのアタッチ

まずはじめに、スクリプトの使い方は人それぞれいろいろな使い方がありますが、ここでは自分なりの使い方を書いていきます。

Unityでのスクリプトの扱いについて

 Unityでは基本、作成したスクリプトはアタッチしたGameObjectに対してのみ動作するように動きます。また、Projectタブ内で作成したスクリプトはScene上のGameObjectにアタッチされない限り実行されることはありません。実行するためには、必ずいずれかのGameObjectにアタッチしなければなりません。スクリプトだけを動かしたいけれど、GameObjectには特になにもしないといった場合、よくある方法としてはMain Cameraや空のGameobjectを作成してそこにスクリプトをアタッチします。

 

UnityではJavaScriptとC#でスクリプトを書くことが出来ますが、基本的にはC#で記述することが推奨されます。これは、JavaScriptでは動作しないメソッドが幾つか存在するためです。

といってもUnityでの書き方は少し特殊なのであるのと、C#とJavaScriptでそこまで記述の方法に違いはないので、C#で書くことが初めての人でもそこまで敷居は高く無いと思います。

 

スクリプトのライフサイクル

Unityでのスクリプトのライフサイクルはとても単純で、Sceneが読み込まれた時にStart()メソッドが読み込まれ、その後はUpdate()メソッドがUnityの描画フレームごとに呼ばれます。これはどのGameObjectにアタッチされていても同じです。StartとUpdateは普段アプリを作っている人には全然馴染みのないものかもしれませんが、Startは初期化する場所で、Updateはずっと呼ばれ続けるといっただけのものなので、そのうち慣れると思います。また、このStartとUpdateといったスクリプトの概念は他のゲームエンジンでも同じようなものがあることが多いです。

ちなみに、Scene上にGameObjectが追加されていても、Sceneが読み込まれた時にそのGameObjectがアクティブになっていないと、スクリプトが実行されません。そのため、特定のタイミングでGameObjectをアクティブにして表示するといった内容は、非表示のGameObjectに記述しても動作しないため注意が必要です。このような動作をさせたい場合どうすればよいのかは、「他のオブジェクトにアタッチされたスクリプトにアクセスする」のページで書いていきます。

 

GameObjectにスクリプトをアタッチする

GameObjectにアタッチするためには、アタッチしたいGameObjectにスクリプトにドラッグ&ドロップするだけでアタッチすることが出来ます。また、GameObjectのInspectorからAdd Componentから指定して追加する方法もあります。自分はGameObjectを選択してInspectorを表示したあと、Inspectorにスクリプトをドラッグ&ドロップして追加することが多いです。

ちなみにスクリプトのチェックボックスをオフにすると、GameObjectは普通に表示されますが、スクリプトは実行されないようになります。

 

 

終わりに

今回も初めの方なので内容は少なめです。ゲームエンジンでは基本的に常にスクリプトは呼ばれるので、慣れない人にとっては厄介かもしれませんが、逆にこっちに慣れてしまうと他のプログラムでもUpdateメソッドが欲しくなってしまうことが多々あったりもします。次回はGameObjectをスクリプトで動かす方法について書いていきます。

 

 

では、また。

 

●この記事を書いた人