【Unity】プリセットでコンポーネントの値を保存する

投稿者: | 2021-06-15

シーンに2つのCubeを追加して、片方のボックスコライダーの値を変えました。このボックスコライダーの状態を保存するには、右上のプリセットのアイコンをクリックします。

すると、Select Presetウィンドウが開くので、「Save current to…」をクリックして、ダイアログでプリセットアセットを保存できます。

保存したプリセットアセットをProjectウィンドウで選択すると、インスペクタで値を編集できます。

値を編集しても、シーンにあるCubeの値は変わりません。

シーンにあるコンポーネントの値を変えても、他のコンポーネントやプリセットアセットの値は変わりません。

プリセットはProject Settingsやインポート設定等でも使えます。

プリセットを適用する

このプリセットを別のゲームオブジェクトに適用したい場合は、適用したいゲームオブジェクトのコンポーネントの右上のプリセットアイコンをクリックします。

すると、Select Presetウィンドウに今保存したプリセットアセットが表示されるので、これをクリックするとこのコンポーネントにプリセットの値が入るので、ウィンドウを閉じます。

他のコンポーネントのSelect Prefabウィンドウでは、ボックスコライダーのプリセットアセットは表示されません。

また、Projectウィンドウからプリセットアセットをドラッグアンドドロップする方法もあります。

適用したいコンポーネントのヘッダーにドラッグすると、このコンポーネントの値がプリセットの値になります。

また、インスペクタの何もないところにドラッグアンドドロップすると、既存のボックスコライダーとは別の新しいボックスコライダーが作られます。作られたコライダーの値はプリセットと同じです。

これは、ヒエラルキーウィンドウのボックスコライダーを持つゲームオブジェクトにドラッグアンドドロップしても同じです。

ヒエラルキーウィンドウのシーン名のあるヘッダーや何もないところにドラッグアンドドロップすると、このプリセットの適用されたコンポーネントとトランスフォームだけの付いたゲームオブジェクトが作られます。

デフォルトのプリセットとして使う

プリセットアセットのインスペクタの「Add to BoxCollider default」ボタンを押すと、このプリセットの値がデフォルトとして使われます。

ボタンをクリックすると、「Remove from BoxCollider default」に表示がかわります。

この状態で新しいCubeオブジェクトを作ってみると、デフォルトで付いているボックスコライダーの値がはじめからこのプリセットアセットの値になっています。

「Remove from BoxCollider default」ボタンを押すとデフォルトのプリセットは元に戻ります。

アニメーションステート

アニメーションステートの値もプリセットアセットに保存できますが、遷移は共有されます。ステートを選択して、インスペクタで値を変えてみました。

また、この他のステートへの遷移も作り、遷移の条件も設定しました。

このステートでプリセットを保存し、新しいステートを作ります。

そして、新しいステートに今作ったプリセットを適用します。

すると、自動で遷移が作られました。

新しいステートのインスペクタでは、変更した値や遷移がプリセットと同じになっています。

遷移のインスペクタの状態も同じです。

ステートマシンでこの遷移を選択すると、プリセットのもとになった遷移も同時に選択されているのがわかります。

通常、オブジェクト同士やオブジェクトとプリセットの間でコンポーネントは共有されませんが、遷移では違うようです。

試しに、新しく作ったステートの値と遷移の値を変更してみました。

ステートのインスペクタの値は、他のステートやプリセットアセットでは変化しません。

別のステート
プリセットアセット

しかし、プリセットの遷移を確認すると、値が変更されていました。

反対に、プリセットの遷移の値を変えると、シーンにある遷移でも値が変わります。

コメントを残す

メールアドレスが公開されることはありません。