注册 登录
  • 欢迎访问Sharezer Blog

AssetDatabase.AddObjectToAsset的问题

Unity sharezer 7861次浏览 已收录 0个评论

有两个类NodeGraph和StateNode,继承于ScriptableObject

现在将一个NodeGraph实例保存到Assets中

AssetDatabase.CreateAsset(curGraph, "Assets/Database/" + wantedName + ".asset");
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();

AssetDatabase.AddObjectToAsset的问题

然后再生成一些StateNode的实例,插到这个NodeGraph的实例中

curNode.name = curNode.nodeName;
AssetDatabase.AddObjectToAsset(curNode, AssetDatabase.GetAssetPath(this));
AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(curNode));
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();

AssetDatabase.AddObjectToAsset的问题

奇怪的事情发生了:

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;

结果在代码不改动的情况,每次得到的情况不一

有像这种成功一半的,也有像以下成功的

AssetDatabase.AddObjectToAsset的问题

AssetDatabase.AddObjectToAsset的问题

扩展阅读:

原来这个Bug从几年前就有了,到现在还没修复

https://issuetracker.unity3d.com/issues/cannot-add-assets-to-a-scriptableobject-asset-with-assetdatabase-dot-addobjecttoasset


Sharezer , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明AssetDatabase.AddObjectToAsset的问题
喜欢 (0)
[liangshaoze@sina.cn]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址