今天无心间又找到了个好方法spa
1
2
3
4
5
6
7
8
9
10
|
[InitializeOnLoadMethod]
static void Start ()
{
Selection.selectionChanged = delegate
{
Debug.Log(Selection.activeObject.name);
};
}
|
前几天有朋友问过我怎么监听sceneview 和 hierarchy视图选择某个gameObject的事件,今天干好有时间我就研究研究。代理
下面的这两个代理事件你们都知道吧?其实均可以干这件事,可是不完美。由于每一帧都会调用一下,才能作判断
EditorApplication.hierarchyWindowItemOnGUI
EditorApplication.updatecode
我以为最好的办法,仍是说当我选择某个gameObject的时候,由unity回调给我一个事件。因此我又找到了一个不完美的解决方法。在你须要监听点击的gameObject的脚本上添加以下代码。OnDrawGizmosSelected 就是选择的回调。可是它可能会回调屡次,因此要进行一次判断保证它只执行一次。seo
1
2
3
4
5
6
7
8
9
10
11
|
#if UNITY_EDITOR
bool selected = false;
void OnDrawGizmosSelected()
{
if (!selected)
{
selected = true;
Debug.Log(gameObject.name);
}
}
#endif
|
若是想在一个地方统一处理,那么就把事件传出去就好了。 OK 这篇文章是个伪命题,若是你有更好的方法欢迎再下面给我留言,谢谢!事件