Unityではスクリプトを作成し、何らかのゲームオブジェクトに設定して使用する事がほとんどです。
わたくしは元々JavaScript(UnityScript)でスクリプトを記述していたので全然気が付かなかったんですが、
C#でスクリプトを記述しているとこれはUnityのEditorの不具合!?
と思うような事が起きました。
インスペクタでスクリプトのチェック項目が表示されない
C#でスクリプトを記述しゲームオブジェクトに設定するとインスペクタでスクリプトのチェック項目(スクリプトの有効・無効の切り替え)が表示されていない事がありました。
スクリプトを作成し何らかのゲームオブジェクトに設定すると
↑のようにC#もJavaScriptで作成したスクリプト両方ともチェック項目が表示されています。
しかしC#スクリプトでも↑のようにチェック項目が表示されない事があります。
C#でほとんどスクリプトを組んでこなかったわたくしにはなぜこうなるのか?が全然わかりませんでしたが、ある事をするとこうなるようです。
チェック項目が表示されなくなる理由
チェック項目が表示されなくなる理由はMonoBehaviourクラスを継承して作成したクラスで
Start()、Awake()、Update()、FixedUpdate()、OnGUI()
のいずれかのメソッドが定義されていないとチェック項目が表示されなくなるようです。
MonoBehaviour - Unity スクリプトリファレンスMonoBehaviour is a base class that many Unity scripts derive from.
その為、スクリプトをオン・オフしたいけどチェック項目が表示されなくて困っている場合は先ほどのいずれかのメソッドを定義すれば項目が表示されるようになります。
んーでも、さきほど紹介したMonoBehaviourクラスのメソッドを使わないのであればチェック項目自体のオン・オフをする必要はないかもしれません。
1 2 3 4 5 6 7 8 9 | public class Test : MonoBehaviour { // Use this for initialization void Start () { } } |
↑のように使わなくてもStartメソッドの定義等をしておけばインスペクタでチェック項目が表示されるようになります。
終わりに
最近C#でスクリプトを組むことが多くなってきて、その際にインスペクタでC#のスクリプトのチェック項目が表示されているものといないものの違いがわからず調べてみました。
JavaScriptでスクリプトを書いた場合は中身を全て消してもチェック項目は表示されました。