码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D游戏开发之如何隐藏物体

时间:2015-02-28 23:03:27      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:3d游戏开发   unity3d培训   unity3d游戏   unity培训   

隐藏物体只需调用 GameObject 的 setActive 方法即可,


GameObject.setActive(false);  // 隐藏
GameObject.setActive(true);  // 显示

但是偶尔会遇到隐藏后无法再次显示出来的情况,是因为开发者将 GameObject 弄成了局部变量,开发者让每一次对控件的操作都去现用现 Find ,但是 Find 方法只能 Find 到 setActive 为 true 的物体,Find 这个函数只返回活动的游戏物体,所以隐藏后 就无法 Find 到该控件,也就无法再次对其进行显示操作。【狗刨学习网

这也是我犯得一个错误,以前经常喜欢这么用,但是 API 手册中也这样写道:
For performance reasons it is recommended to not use this function every frame Instead cache the result in a member variable at startup or use GameObject.FindWithTag.
除非迫不得已,建议不要在每一帧中使用这个函数。可以在开始的时候用一个成员变量来缓存结果或者使用GameObject.FindWithTag函数。
所以,尽量不要养成每次现用现调的坏习惯。

解决办法: 只需要将该 GameObject 设置为全局变量,在 Awake 中(或根据需要去决定的某合适位置) Find 一次就好,其他地方直接去引用,而不用再次进行Find 操作。

初学者一名,只是想把自己遇到的问题的解决方案写上来,自己留个备份,也可以帮助其他初学者。
可能问题过于简单,希望大神勿喷,有错误还请各位指出,十分感谢。

Unity3D游戏开发之如何隐藏物体

标签:3d游戏开发   unity3d培训   unity3d游戏   unity培训   

原文地址:http://blog.csdn.net/book_longssl/article/details/43991809

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!