优质中文开源软件代码项目资源技术共享平台
传播开源的理念,推广开源项目
学习是对自己最棒的投资!与君共勉!

网站首页 > 游戏开发 正文

#你好Unity3D#Hierarchy视图监听gameObject点击事件

longtao100 2021-09-06 游戏开发 500 ℃ 0 评论

今天无意间又找到了个好方法

 

 
[ 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
12
13
 
#if UNITY_EDITOR      
     bool   selected   =   false ;      
     void   OnDrawGizmosSelected ( )      
     {      
         if   ( ! selected )      
         {      
             selected   =   true ;      
             Debug . Log ( gameObject . name ) ;      
         }      
     }      
#endif      
 

如果想在一个地方统一处理,那么就把事件传出去就行了。 OK 这篇文章是个伪命题,如果你有更好的方法欢迎再下面给我留言,谢谢!

 

 


Tags:Unity3D

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

请填写验证码
开源分类
最近发表
开源网标签
开源网归档