前回、Unityでダメージエフェクトをスクリプトから出す方法について書きました。
今回は、値の調整について手直ししていきます。
前回のコードの確認
前回のスクリプトで、以下のようにスケールを10倍という部分がありました。
このように、プログラムに埋め込んでしまうと値を1回調整するたびにコンパイルが必要となります。
調整する値は SerializeField にしてインスペクターに表示する
なので、調整すべき値は SerializeField にしてインスペクターに表示しましょう。private にするのがいいです。
下図がスクリプトです。
こうすることで、実行中にインスペクターで調整できるので、都度コンパイルが不要です。
調整値を使うように参照箇所もさきほどの変数に変更します。
考え方としては、デザイナさんが触るようなところは出しておくのがよいでしょう。
分業していないとしても、そのような考え方で、スクリプトとデザインデータについて独立して考えるといいでしょう。
死亡エフェクトについても調整
死亡エフェクトについてもスケールを埋め込んでいました。
また、スケールだけではなくタイミングも埋め込んでいたので、両方を変数に変更します。
これでインスペクターで調整できるようになりました。
publicなフィールドもインスペクターで調整できるが
Unity のインスペクターに表示するのは、
ここまで解説したような、C#のフィールド(プロパティではない)に SerializeField 属性をつける方法の他に、
public なフィールドにする方法があります。
public なフィールドでも、インスペクターに出せるのですが、
他のスクリプトからも変更ができ、
どちらで触っているのかわからなくなるというデメリットがあるので、
わかりやすさの面では個人的には使いたくないと思っています。
終わりに
今回は、SerializeField を使ったインスペクターでの調整方法について紹介しました。
直値はなるべく定数や、SerializeField に設定していきましょう。