繁体   English   中英

如何从代码(Unity)在检查器中打开资产的孩子

[英]How to open a child of asset in inspector from code (Unity)

例如,我有 Prefab MyPrefab,它有两个孩子(child_1,child_2)。

AssetDatabase.OpenAsset(child_1); 在检查器中打开 MyPrefab 而不是 child_1。

我假设您有一个预制件,并且在该预制件内您有另一个您希望使用 C# 打开的预制件。

您可以通过在要打开的子预制件上使用PrefabUtility.GetCorrespondingObjectFromSource方法然后在返回的结果上调用AssetDatabase.OpenAsset方法来做到这一点。

例子

using UnityEditor;
using UnityEngine;

public class TestScript : MonoBehaviour
{
    [SerializeField]
    private GameObject prefab = null;

    [SerializeField]
    private string childPrefabName = string.Empty;

    private void Run()
    {
        var child = prefab.transform.Find(childPrefabName);
        var childPrefab = PrefabUtility.GetCorrespondingObjectFromSource(child);

        AssetDatabase.OpenAsset(childPrefab);

    }

    [CustomEditor(typeof(TestScript))]
    public class TestScriptEditor: Editor
    {
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            if (GUILayout.Button("Run"))
            {
                var script = target as TestScript;
                script.Run();
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM