【Unity】エラー発生!?非アクティブ設定の落とし穴!

 

Unityでゲームを作っていると、予期せぬエラーが発生してしまうことがある。

そんなエラーを解決する一助になればと思い記事にしておきます。

本日のテーマ

アタッチされたスクリプトの
『非アクティブ設定』で起こるエラー

 

こんな経験ありませんか?

 

アタッチされているスクリプトを、

「機能を一時的に止めるために、非アクティブに設定する」

あるいは、

不要になったスクリプトだけど、後から使うかもしれないからと、

非アクティブに設定して、アタッチしたままにしておく」

 

このようなことを経験したことはありませんか?

 

『非アクティブに設定する』とは

 

非アクティブに設定する』とは、

アタッチされたスクリプトの“チェックをはずす”ということです。

こんな感じですね。

 

『非アクティブ設定』の落とし穴

 

スクリプトを非アクティブに設定する場合には、

注意しなければいけないポイントが1つあります。

 

それは、

Point

スクリプトを『非アクティブ』に設定したからといって、そのスクリプトの機能が完全に停止したわけではない

ということです。

 

どういうことかというと、

 

スクリプトを『非アクティブ』に設定したとしても、

・Awake関数

・OnCollision系関数

・OnTrigger系関数

少なくとも上記3種のイベント関数は“実行される”のです。

 

ちなみに、Start関数、Update系関数、OnGUI関数の3種のイベント関数は、

非アクティブ設定で呼び出されることはありません。

 

ですので、

非アクティブに設定するスクリプトに、

OnCollision系やOnTrigger系のイベント関数が記述されている場合には、

十分注意してください。

 

まとめ

 

まとめ

Awake、OnCollision系、OnTrigger系のイベント関数は、スクリプトを非アクティブに設定しても “実行される” ので注意が必要

スクリプトを非アクティブに設定する場合は、

上記のことをしっかり意識して行い、不要なスクリプトは、

きちんとRemove Componentするよう心がけてください。

 

以上で、エラー発生!?非アクティブ設定の落とし穴!の解説を終わります。

 

コメントを残す