打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
unity中查找对象的五种方法

unity中提供了获取对象的五种方法:

  1. 通过对象名称(Find方法)
  2. 通过标签获取单个游戏对象(FindWithTag方法)
  3. 通过标签获取多个游戏对象(FindGameObjectsWithTags方法)
  4. 通过类型获取单个游戏对象(FindObjectOfType方法)
  5. 通过类型获取多个游戏对象(FindObjectsOfType方法)

Find方法:
static GameObject Find (string name)
传入的name可以是单个的对象的名字,也可以是hierarchy中的一个路径名,如果找到会返回该对象(活动的),如果找不到就返回null。
  1. var cubeF = GameObject.Find("/CubeFather");  
  2. if (null != cubeF)  
  3. {  
  4.     Debug.Log("find cube father~");  
  5. }  
  6. cubeF = GameObject.Find("CubeFather");  
  7. if (null != cubeF)  
  8. {  
  9.     Debug.Log("find cube father, no /~");  
  10. }  
  11.   
  12. var cubeS = GameObject.Find("/CubeFather/CubeSon");  
  13. if (null != cubeS)  
  14. {  
  15.     Debug.Log("find cube son~");  
  16. }  
  17. cubeS = GameObject.Find("CubeFather/CubeSon");  
  18. if (null != cubeS)  
  19. {  
  20.     Debug.Log("find cube son, no /~");  
  21. }  
  22. cubeS = GameObject.Find("CubeSon");  
  23. if (null != cubeS)  
  24. {  
  25.     Debug.Log("find cube son, no one /~");  
  26. }  

结果如上,可见不论参数是对象名字还是对象的路径,只要对象存在都会查找到,但是建议最好是写详细的路径名例如CubeFather/CubeSon,这样的话,在unity查找的过程中会省很多事,效率高;另外不要在每一帧都执行的函数中调用该函数,可以看上图结果中会执行好多次,用到某个对象时可以在Start这种只执行一次的函数中定义变量获取Find的返回值,再在每帧都执行的函数中使用该变量即可~


FindWithTag方法:
static GameObject FindWithTag (string tag
返回一个用tag做标识的活动的对象,如果没有找到则为null。
  1. var sphere = GameObject.FindWithTag("Sphere");  
  2. if (null != sphere)  
  3. {  
  4.     Debug.Log("Sphere~");  
  5. }  
将hierarchy中某个对象的Inspector面板上面的Tag自定义一个,然后为其选择自定义(上述例子中用的Sphere)
,当然没有的话,利用下拉列表中的AddTag构建


FindGameObjectsWithTag方法:
static GameObject[] FindGameObjectsWithTag (string tag)
返回一个用tag做标识的活动的游戏物体的列表,如果没有找到则为null。具体代码略过~


FindObjectOfType方法:
static Object FindObjectOfType(Type type)
返回类型为type的活动的第一个游戏对象


FindObjectsOfType方法:
static Object FindObjectsOfType(Type type)
返回类型为type的所有的活动的游戏对象列表


注意:一定保证对象是active的才会找到
         为了效率高,一定要保证别在每帧都调用的函数中使用上述函数

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Unity MonoBehaviour
如何在unity3d中查找子对象
C# 事件和Unity3D
开发实例:Unity集成Leap Motion
2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
Using Scripts 使用脚本
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服