今天無意間又找到了個好方法
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.update
我覺得最好的辦法,還是說當我選擇某個gameObject的時候,由unity回調給我一個事件。所以我又找到了一個不完美的解決方法。在你需要監聽點擊的gameObject的腳本上添加如下代碼。OnDrawGizmosSelected 就是選擇的回調。但是它可能會回調多次,所以要進行一次判斷保證它只執行一次。
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 這篇文章是個偽命題,如果你有更好的方法歡迎再下面給我留言,謝謝!
- 本文固定鏈接: http://www.xuanyusong.com/archives/3773
- 轉載請注明: 雨松MOMO 2015年11月29日 於 雨松MOMO程序研究院 發表