今天無心間又找到了個好方法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 這篇文章是個僞命題,若是你有更好的方法歡迎再下面給我留言,謝謝!事件