Unity-Editor 編輯Inspector面板數(shù)據(jù)保存問題
使用Editor 編輯腳本琳猫,在Inspector當你把數(shù)據(jù)填上去做成Prefabs時,加載正常,當你Unity重新啟動的時候會發(fā)現(xiàn),數(shù)據(jù)會丟失。1552028640(1).jpg
解決辦法你只需要再你的方法里面加幾句代碼就OK了!
修改前:
[CustomEditor(typeof(ToolConfigration))]
public class ToolConfigrationEditor : Editor
{
ToolConfigration toolConfig;
private void OnEnable()
{
toolConfig = target as ToolConfigration;
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button(new GUIContent("Generate Tool Enums", "更新工具信息后點此更新工具枚舉,")))
{
//Todo: 創(chuàng)建文件 ToolBox
List<ToolInfo> infos = new List<ToolInfo>(toolConfig.Tools);
List<string> names = new List<string>();
string anchorType = string.Empty;
string toolname = string.Empty;
for (int i = 0; i < infos.Count; i++)
{
ToolInfo toolInfo = infos[i];
Anchor[] anchors = toolInfo.prefab.GetComponentsInChildren<Anchor>();
if (anchors.Length > 1)
{
Debug.LogWarning("約定工具有且僅有一個Anchor,這個工具有大于1個Anchor豺憔,不被允許额获!");
}
if (anchors.Length > 0)
{
anchorType = anchors[0].Specifications.ToString();
}
toolname = toolInfo.localizeDatas
.Where(v => v.languageType.ToString().Contains("Chinese"))
.Select(v => v.Name)
.FirstOrDefault()
.Trim();
if (string.IsNullOrEmpty(toolname))
{
Debug.LogError("請留意工具未指定名稱,這不被允許恭应!Prefab Name: " + toolInfo.prefab.name);
}
string str = string.Format("{0}{1}=1<<{2},", anchorType, toolname, i);
toolInfo.IdentifyName = string.Format("{0}{1}", anchorType, toolname);
names.Add(str);
}
string data = string.Empty;
foreach (var tn in names)
{
data += tn + "\n";
}
data = "using System;\n/// <summary> 工具集合 </summary>\n[Flags]\npublic enum ToolBox\n{\n" + data + "}";
var path = FolderMaker.Creat(typeof(ToolConfigration), "") + "ToolBox.cs";
Debug.Log(path);
File.WriteAllText(path, data, Encoding.UTF8);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
}
修改后:
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
if (GUI.changed)
{
EditorUtility.SetDirty(target);
}
}
}
代碼用處就是:當Inspector 面板發(fā)生變化時保存數(shù)據(jù)抄邀,這樣就能保存了!