如何解决可编写脚本的对象在重命名时重新排序父/子
我是如何到达这里的:我一直在开发一种使用具有子脚本对象的脚本对象的工具。该系统运行良好,但是当我重命名 SO 时,Unity 中的父/子关系会中断。
我现在设法将其归结为一个非常简单的案例研究。
使用下面的代码,您可以创建一个容器 SO 资产。然后使用 MyMenu 创建数据,它是容器的子项。所有这些都按预期进行,项目中的关系是:
容器 -> 数据
但是,一旦您将容器 SO 重命名为其他名称,Unity 会对父子项重新排序,以便数据现在是父项,而容器是子项:
数据 -> 容器
以下是应该重复此问题的代码(Unity 2020.1.17f1 - 在 2020.1.8 上也有相同的结果)
Container.cs
using UnityEngine;
[CreateAssetMenu]
public class Container : ScriptableObject
{
}
Data.cs
using UnityEngine;
public class Data : ScriptableObject
{
}
CustomEditor.cs
using UnityEditor;
using UnityEngine;
public class CustomEditor : Editor
{
[MenuItem("MyMenu/Create Data for Container")]
static void CreateDataForContainer()
{
Container container = Selection.activeObject as Container;
if (container != null)
{
Data data = ScriptableObject.CreateInstance(typeof(Data)) as Data;
data.name = data.GetType().Name;
if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(container)))
{
AssetDatabase.AddobjectToAsset(data,container);
}
AssetDatabase.SaveAssets();
}
}
}
注意事项
如果您遇到过这种情况,我很想知道我在这里做错了什么,我的工具快完成了,这阻止我推出它。谢谢!
解决方法
Unity 端的错误修复:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。