在unity编辑器中 用代码实现在Scene视图中 点击物体或者UI 等激活选中对象父物体包含Collder组件的对象 否则只激活自身
时间: 2024-03-02 18:54:31 浏览: 146
Unity:初学在Unity3D中涂鸦
您可以使用以下代码来实现这个功能:
```csharp
using UnityEngine;
using UnityEditor;
[InitializeOnLoad]
public class ClickObjectHandler
{
static ClickObjectHandler()
{
SceneView.onSceneGUIDelegate += OnSceneGUI;
}
private static void OnSceneGUI(SceneView sceneView)
{
if (Event.current.type == EventType.MouseDown && Event.current.button == 0)
{
Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
GameObject clickedObject = hit.collider.gameObject;
if (clickedObject.GetComponent<Collider>())
{
GameObject parentObject = clickedObject.transform.parent.gameObject;
if (parentObject.GetComponent<Collider>())
{
Selection.activeGameObject = parentObject;
}
else
{
Selection.activeGameObject = clickedObject;
}
}
}
}
}
}
```
这段代码会在Unity Editor启动时自动运行,并在场景视图中监听鼠标点击事件。当用户在场景视图中点击一个对象时,它会检测该对象是否包含Collider组件。如果包含Collider组件,则检查其父物体是否包含Collider组件。如果父物体包含Collider组件,则选中父物体;否则,选中对象本身。
阅读全文