当前位置: 首页 > news >正文

Unity物体查找方式

参考资料
cUnity中使用GameObject.Find、Transform.Find查找GameObject_思月行云的博客-CSDN博客

GameObject.Find


通过名字或路径查找游戏对象。

GameObject.Find("GameObject");

GameObject.Find("GameObject/ChildGameObject); 

使用规范: 
1.无法查找隐藏对象 ​​​​​​​
隐藏对象包括查找路径的任何一个父节点隐藏(active=false)

2.如果查找不在最上层,建议合理使用路径查找,路径查找是把双刃剑

优点1:解决查找中可能出现的重名问题。 
优点2:如果有完全的路径,减少查找范围,减少查找时间。

缺点: 路径或结构调整后,容易影响到程序中的查找,需要重新定位查找路径。

3.如果路径查找中的任何一个父节点active=false,这个对象都将查找不到。

4.使用方便但效率低下 
此查找相当于递归遍历查找,虽使用方便但效率堪忧,建议在Start()函数中查找对象并保存引用,切忌在Update()中动态查找。


Transform.Find


1.可以查找隐藏对象 
2.支持路径查找 
3.查找隐藏对象的前提是transform所在的根节点必须可见,即active=true

GameObject root = GameObject.Find("root");

root.SetActive(false); // 根节点为空

// 总是查找失败

root.transform.Find("root/AnyChildObjectName");

实际开发: 
实际开发中会将功能预制体放到一个可见的GameObject目录下,将这个GameObject目录作为查找根节点,下面的所有对象(隐藏、非隐藏)都可以查找到。

你可以把”map”节点放在一个active = true的MapRoot上,无论是关闭 或者 显示 代码中写起来都很方便。 假如你的map节点就是顶级节点,那么它一旦天生acive = false ,那么你将无法得到它的对象,更无法设置它的属性了。

GameObject root = GameObject.Find("MapRoot");

GameObject map = root.transform.Find("map").gameObject;  

map.SetActive(true);
 

http://www.lryc.cn/news/161080.html

相关文章:

  • 【Spring容器的启动流程】
  • Python---字符串
  • MySQL数据 - 索引
  • 长安链BaaS服务平台调研
  • 怎么关闭php错误提示?两者方法分享
  • Android Aidl跨进程通讯(三)--进阶使用
  • vue.js+nodejs家庭个人理财收支管理系统5x6nf
  • 怎样去掉win11快捷方式的小箭头
  • Django项目如何配置日志文件信息
  • 遇到一个异步任务后是否会直接加入到异步队列当中
  • SUSE Linux文件系统在线扩容
  • 智能电话机器人的出现,能够解决哪些问题?
  • 16-数据结构-图的存储结构
  • 递推算法及常见示例(C++、Python实现)
  • vscode调试程序设置
  • 电商邮件营销攻略:教你如何有效运营邮件营销策略!
  • centos+jenkins+pycharm
  • Linux-Centos7安装Docker
  • 前端Vue入门-day06-路由进阶
  • 数据库服务器是什么意思?数据库服务器有哪些?
  • 配电网智能软开关(sop)规划模型matlab
  • Qt 常用函数
  • UMA 2 - Unity Multipurpose Avatar☀️六.Advanced Occlusion高级遮挡功能解决皮肤服饰穿模
  • 深度解析自然语言处理之篇章分析
  • Python3.11教程3:模块和包(pip/conda)、文件系统(os/ shutil/json/pickle/openpyxl/xlrd)
  • shell 脚本工具(三剑客)
  • 基于微信小程序的智能垃圾分类回收系统,附源码、教程
  • 【C++进阶】:AVL树(平衡因子)
  • Python教程33:关于在使用zipfile模块,出现中文乱码的解决办法
  • 【疑难杂症】使用xshell连接云服务器连接不上