有两个类NodeGraph和StateNode,继承于ScriptableObject
现在将一个NodeGraph实例保存到Assets中
AssetDatabase.CreateAsset(curGraph, "Assets/Database/" + wantedName + ".asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh();
然后再生成一些StateNode的实例,插到这个NodeGraph的实例中
curNode.name = curNode.nodeName; AssetDatabase.AddObjectToAsset(curNode, AssetDatabase.GetAssetPath(this)); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(curNode)); AssetDatabase.SaveAssets(); AssetDatabase.Refresh();
奇怪的事情发生了:
1、StateNode实例的名字并没有被改变,而且都变得了和NodeGraph的名称
2、NodeGraph的实例,变成在StateNode下面
于是我换了几种写法
如在保存完后再去改到curNode.name
curNode.name = curNode.nodeName; AssetDatabase.AddObjectToAsset(curNode, AssetDatabase.GetAssetPath(this)); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(curNode)); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); curNode.name = curNode.nodeName;
结果在代码不改动的情况,每次得到的情况不一
有像这种成功一半的,也有像以下成功的
扩展阅读:
原来这个Bug从几年前就有了,到现在还没修复