Unityでたまにスクリプトのチェックボックスが表示されないものを見かける。
それに関しては全然気にしてなかったけど、そのせいでめちゃくちゃ詰まったので書いておく。
◆表示されない原因
スクリプト内に以下のいずれも書かれていないため。
Start()、Update()、FixedUpdate()、LateUpdate()、
OnGUI()、OnDisable()、OnEnable()
https://docs.unity3d.com/ja/2018.4/ScriptReference/MonoBehaviour.html
独自関数だけで構築されたスクリプトなどはチェックボックスが表示されなくなる。
◆チェックボックスが表示されている状態でチェックを外すとどうなるか
スクリプトが無効になる。
ただし実際にはAwake() までは動くが
Start()、Update()などが動かなくなる。
◆問題
チェックボックスが表示されている時にチェックを外してスクリプトを無効にし、そのままスクリプトからstart()などを消してチェックボックスが非表示状態で保存するとどうなるか?
↓
↓
◆答え
スクリプトは動くが、無効判定になる
どういう処理を書いているかにもよるが、他のスクリプトから呼び出したり該当スクリプトを実行することは可能。
ただし、Unityシーン上では該当スクリプトはEnable=falseの状態なので
スクリプトの取得や実行方法によってはスクリプト無効の判定になります。
※↑Unityシーンをテキストファイルで開くとわかる
しかもこやつ、デバッグモードでもそのステータスは表示されない。
GameObjectはアクティブだしスクリプトも動いているのに、そのGameObjectからスクリプト取得すると無効判定になっているのなんでぇえええええええ!!!
ってなる。
なった。
詰んでました。
普段と違うなって思ったらちゃんと調べておくの大事ですね。
以上、解散っ!
※コメントは承認後に表示されます。
コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。