(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]

コンポーネントの設定値をアセットとして保存&反映したり、初期値を変えたりする Preset【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2018.4.8f1


はじめに

Unityはコンポーネントの設定値をコピペする事が出来ます。

f:id:kan_kikuchi:20191019075435j:plain


ただ、このコピべの頻度が多くなると結構手間ですし、

そもそもコンポーネントの設定値の初期値を変更したいという事もある。


そこで使えるのが今回紹介するPresetという機能です。

f:id:kan_kikuchi:20191019080941g:plain


ちなみにPresetはUnity 2018.1から追加されたようです。


Presetとは

Presetとは簡単に言うとコンポーネントの設定値を保存するためのアセットです。


使い方は簡単で、コンポーネントの右上にあるバーみたいな所を選択し、

出てきたウィンドウの左下にあるSave current to…現在の設定値をPresetとして保存できます。

f:id:kan_kikuchi:20191019080842j:plain


ちなみに保存されたPresetは以下のような感じで、選択すると保存されている設定値を確認出来ます。

f:id:kan_kikuchi:20191019080929j:plain


また、設定値の反映もPresetを選択するだけです。

f:id:kan_kikuchi:20191019080941g:plain



Presetを初期値にする

保存したPresetを選択し、Inspector上部にある

Set as {コンポーネント名} Defaultを押すと、その設定値を初期値に出来ます。

f:id:kan_kikuchi:20191019081044j:plain


そうすると、Hierarchy上で生成したり、

Add Componentで追加した際に初期値が変わるようになります。

f:id:kan_kikuchi:20191019081419j:plain


ただし、プログラム(AddComponent)で追加した時はPresetは適用されません。

//Presetは適用されない
gameObject.AddComponent<BoxCollider>();


ちなみに各コンポーネントの初期値にどのPresetが設定されているかは、

Project SettingsのPreset Managerから確認(変更も)が出来ます。

f:id:kan_kikuchi:20191019081541j:plain
f:id:kan_kikuchi:20191019081604j:plain



Presetをプログラムで使う

一応、以下のような感じでPresetの値をプログラムから反映させる事は可能ですが、

using UnityEditor.Presets;//Presetを使うのに必要
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

  //BoxColliderのプリセット
  public Preset Preset;
    
  private void Start() {
    //コライダーを追加して、プリセットの設定を反映
    var boxCollider = gameObject.AddComponent<BoxCollider>();
    Preset.ApplyTo(boxCollider);
  }

}
f:id:kan_kikuchi:20191019102551j:plain


PresetはUnityEditorの機能なので、実機では使えません。

なので「状況に合わせてロードするPresetを変えて、挙動を変える」みたいな使い方は出来ません。

(エディタ上だけで使う機能なら可能)


参考