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();
}