Editor拡張した際、IntField等で値を更新するだけでは値は保存されていません。
別途シーンの更新があって保存した場合は一緒に更新されますが、それ以外の場合はUnityを閉じたときやアプリを再生したときに値が戻ります。
そのためシーン内にいるとき、プレハブを編集するときに更新があれば保存する処理を入れる必要があります。
using UnityEditor;
using UnityEditor.SceneManagement;
public override void OnInspectorGUI()
{
EditorGUI.BeginChangeCheck();
// 省略
// Instance = (クラス名)target
if (EditorGUI.EndChangeCheck())
{
string path = Instance.gameObject.scene.path;
if (path == null || !path.Contains(".unity")) { EditorUtility.SetDirty(Instance); }
else { EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); }
}
}
SerializeObjectを使う場合は下記になります。
using UnityEditor;
public override void OnInspectorGUI()
{
serializedObject.Update();
// 省略
serializedObject.ApplyModifiedProperties();
}
投稿者プロフィール
最新の投稿
- 2023年10月9日プログラミング【ライセンス】GPL/LGPLライブラリについて
- 2023年8月19日その他【Pixiv】閲覧注意機能が反映されないときに確認すること
- 2023年4月30日プログラミング【JavaScript】ファイルの保存先をダイアログで指定する方法 – showSaveFilePicker()の使い方
- 2022年10月17日その他「NovelAI Diffusion」を使ってみた (Img2Img)