LoginSignup
1
2

More than 1 year has passed since last update.

[Unity]アトリビュートの活用 - メソッドを非ランタイム時に実行

Last updated at Posted at 2021-12-23

アトリビュートとは変数宣言の前に書いたりする[ ]で囲まれた、[Serializefield]とかのあれです。
アトリビュートをつけると、特殊な扱いを受けるものになったりします。
Serializefield以外にもいろいろな種類があるのですが、使ってて役立ったものを紹介します

[ContextMenu]

[ContextMenu]をつけると、メソッドを非ランタイム時に実行することができるようになります。
どういうことかというと、とりあえず見てみましょう

ボタンを押すと、パネルのテキストが変更されるというメソッドを作ります
image.png
image.png
このメソッドをインスペクターから設定する場合、ボタンコンポーネントにChangeTextメソッドを設定すると思います
image.png

これで、ボタンを押すとテキストが変わるということができました
398410000099.gif


今作ったメソッドを、インスペクターから実行できるようにします。
ChangeTextメソッドの前に、[ContextMenu("ChangeText")]と足します。引数にはメソッド名を文字列で入れます
image.png
これで準備が整いました

メソッドを書いたスクリプトがアタッチされているオブジェクトのコンポーネントから、右上のメニューを開くと、ChangeTextのメソッド名が追加されています
image.png

これを押すと、再生時でなくても、そのメソッドを実行することができます
3984100000999.gif


さて、unityは
・再生中に変更した値は再生が終わると元に戻る
という仕様ですが、そもそも今回は非再生時に実行したので、テキストを変更してもずっと変わったままになっています

これで何ができるかというと、例えば、
大量のオブジェクトを生成して配置するというのを手動でやりたくないとき、スクリプトでやることができるわけです

ただし、これで実行したものはアンドゥが利かないので注意

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2