[英]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.