您可以将组件添加到(仅限编辑器)关卡编辑场景中的对象:
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
public class LevelEditorHelper : MonoBehaviour
{
LevelEditorHelper()
{
EditorApplication.hierarchyWindowChanged -= MyHierarchyChangedCallback;
EditorApplication.hierarchyWindowChanged += MyHierarchyChangedCallback;
}
private static void MyHierarchyChangedCallback()
{
Debug.Log("Hierarchy has changed");
}
}
#endif
然后在回调中,您可以访问当前选定的对象(添加的对象将是活动选择):
GameObject activeObj = Selection.activeGameObject;
if(activeObj != null) {
...
现在您可以检查它的父对象以查看它是否与其他任何对象匹配,并执行其他检查以确保这实际上是您感兴趣的事件(请记住,它也会因各种其他层次结构更改而被调用),然后您可以调用另一个功能来执行您想要的任何操作。
注意:这不适用于游戏内场景,如果您直接使用关卡编辑器脚本编辑游戏内场景,那么您需要更仔细地放置#if UNITY_EDITOR
并考虑如何删除不必要的组件(Start
如果可能的话,可能在构建时或构建时),或者如果您对此感到满意,就让它什么都不做。在我的例子中,我的关卡编辑器是一个仅限编辑器的场景,它会将编辑器场景的特定子集保存为游戏中使用的场景。