Unity-Editor 编辑Inspector面板数据保存问题
2019-03-08 本文已影响0人
芊泽花_J
Unity-Editor 编辑Inspector面板数据保存问题
使用Editor 编辑脚本,在Inspector当你把数据填上去做成Prefabs时,加载正常,当你Unity重新启动的时候会发现,数据会丢失。
解决办法你只需要再你的方法里面加几句代码就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: 创建文件 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 面板发生变化时保存数据,这样就能保存了!