アトリビュートとは変数宣言の前に書いたりする[ ]で囲まれた、[Serializefield]とかのあれです。
アトリビュートをつけると、特殊な扱いを受けるものになったりします。
Serializefield以外にもいろいろな種類があるのですが、使ってて役立ったものを紹介します
##[ContextMenu]
[ContextMenu]をつけると、メソッドを非ランタイム時に実行することができるようになります。
どういうことかというと、とりあえず見てみましょう
ボタンを押すと、パネルのテキストが変更されるというメソッドを作ります
このメソッドをインスペクターから設定する場合、ボタンコンポーネントにChangeTextメソッドを設定すると思います
これで、ボタンを押すとテキストが変わるということができました
今作ったメソッドを、インスペクターから実行できるようにします。
ChangeTextメソッドの前に、[ContextMenu("ChangeText")]
と足します。引数にはメソッド名を文字列で入れます
これで準備が整いました
メソッドを書いたスクリプトがアタッチされているオブジェクトのコンポーネントから、右上のメニューを開くと、ChangeTextのメソッド名が追加されています
これを押すと、再生時でなくても、そのメソッドを実行することができます
さて、unityは
・再生中に変更した値は再生が終わると元に戻る
という仕様ですが、そもそも今回は非再生時に実行したので、テキストを変更してもずっと変わったままになっています
これで何ができるかというと、例えば、
大量のオブジェクトを生成して配置するというのを手動でやりたくないとき、スクリプトでやることができるわけです
ただし、これで実行したものはアンドゥが利かないので注意