美文网首页
Unity-Editor 编辑Inspector面板数据保存问题

Unity-Editor 编辑Inspector面板数据保存问题

作者: 芊泽花_J | 来源:发表于2019-03-08 15:15 被阅读0次

Unity-Editor 编辑Inspector面板数据保存问题

使用Editor 编辑脚本,在Inspector当你把数据填上去做成Prefabs时,加载正常,当你Unity重新启动的时候会发现,数据会丢失。 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: 创建文件 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 面板发生变化时保存数据,这样就能保存了!

相关文章

网友评论

      本文标题:Unity-Editor 编辑Inspector面板数据保存问题

      本文链接:https://www.haomeiwen.com/subject/gczyzftx.html