unity怎么unity 获取当前时间游戏对象的size

给我们留言
地址:福建省晋江市青阳街道洪山路国际工业设计园纳金网
电话: 400-067-3919
(周一到周五, 周六周日休息)
设计师入口
查看: 2087|回复: 5
最后登录注册时间阅读权限90积分32965
资深设计师, 积分 32965, 距离下一级还需 17035 积分
纳金币32806 精华12
看了很多&&太复杂&&求高手 给个代码 O(&_&)O 我懒 谢谢
最后登录注册时间阅读权限10积分30
设计初学者, 积分 30, 距离下一级还需 70 积分
纳金币30 精华0
用个 int 记录帧数` 在Update 里面每次加一&&然后在弄个记录时间的&&每次 += Time.deltaTime
然后当 记录时间的大于1就现实下记录的帧数 然后把帧数和时间清零`&&如此循环
最后登录注册时间阅读权限100积分71677
纳金币59371 精华22
& & // Attach this to a GUIText to make a frames/second indicator.
& & // It calculates frames/second over each updateInterval,
& & // so the display does not keep changing wildly.
& & // It is also fairly accurate at very low FPS counts (&10).
& & // We do this not by simply counting frames per interval, but
& & // by accumulating FPS for each frame. This way we end up with
& & // correct overall FPS even if the interval renders something like
& & // 5.5 frames.
& & var updateInterval = 0.5;
& & private var accum = 0.0; // FPS accumulated over the interval
& & private var frames = 0; // Frames drawn over the interval
& & private var timeleft : // Left time for current interval
& & function Start()
& & & & if( !guiText )
& && && & {
& & & && &&&print (&FramesPerSecond needs a GUIText component!&);
& & & && &&&enabled =
& & & && &&&
& & & & timeleft = updateI&&
& & function Update()
& & & & timeleft -= Time.deltaT
& & & & accum += Time.timeScale/Time.deltaT
& & & & ++
& & & & // Interval ended - update GUI text and start new interval
& & & & if( timeleft &= 0.0 )
& & & && &&&// display two fractional digits (f2 format)
& & & && &&&guiText.text = && + (accum/frames).ToString(&f2&);
& & & && &&&timeleft = updateI
& & & && &&&accum = 0.0;
& & & && &&&frames = 0;
最后登录注册时间阅读权限90积分32965
资深设计师, 积分 32965, 距离下一级还需 17035 积分
纳金币32806 精华12
最后登录注册时间阅读权限90积分23569
资深设计师, 积分 23569, 距离下一级还需 26431 积分
纳金币19957 精华62
学习了,虽然还是有难度,谢谢楼主的用心
最后登录注册时间阅读权限90积分32051
资深设计师, 积分 32051, 距离下一级还需 17949 积分
纳金币33044 精华80
谢谢楼主的帖子分享,学习了
活跃且尽责职守的版主
站长推荐 /1
纳金名模第142期现代台灯3d模型:数量93个,大小为415MB。完全免费下载哦!这样的福利我和我的小伙伴们都惊呆了!!下载地址:
Powered by - X2.5
Narkii Inc.程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
#你好Unity3D#Unity获取游戏对象详解(来自我的长微博)
#你好Unity3D#Unity获取游戏对象详解(来自我的长微博)
围观62842次
编辑日期: 字体:
我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样,这俩哥们很要好,我能直接找到你,你也能直接找到我。我看很多人喜欢在类里面去保存GameObject对象。解决GameObject.Find()无法获取天生activie = false的问题。
private GameO
我觉得你最好不要保存GameObject ,而是去保存Transform ,因为Transform下的方法要比GameObject多,使用频率也要高很多。
其实我心里一直有个疑问,为什么unity不把GameObject和Transform合并成一个对象。
1.GameObject.Find()
通过场景里面的名子或者一个路径直接获取游戏对象。
GameObject root = GameObject.Find(“GameObject”);
我觉得如果游戏对象没再最上层,那么最好使用路径的方法,因为有可能你的游戏对象会有重名的情况,路径用“/”符号隔开即可。
GameObject root = GameObject.Find(“GameObject/Cube”);
GameObject.Find()使用起来很方便,但是它有个缺陷如下图所示,就是如果你的这个GameObject天生acive = false的话。那么你用GameObject.Find()是永远也无法获取它的对象的。如果对象都获取不到,那么对象身上脚本啊 组件啊啥的都是获取不到的,变成了没有意义的对象。
就这个问题我查过很多资料,最终也无果。。但是我用另外一个巧妙的办法可以解决它。(后面详解)或者你也可以提前把所有的游戏对象保存在内存中。
GameObject.Find()方法在游戏中的使用频率很高。但是它也很消耗性能,你可以想想它的原理肯定也是用类似递归的形式来做的,那么我们就要尽量更少的调用GameObject.Find()方法,可以把获取的游戏对象,保存在内存里,这是再好不过的选择了。 尤其是在Update方法中不要去 Find()游戏对象!!
2 .Transform.Find()
还记得上面我说过用GameObject无法获取天生acive = false的游戏对象,如果你用Transform.Find()的话就可以很好的获取,另外Unity还提供了一个Transform.FindChind()的方法,这个方法未来会被unity废弃,大家最好就别用了,用Transform.Find()可以取代。
如下代码,我们先获取顶级对象root 。接着用Find()去找它的子节点”xxxx”的对象,无论”xxxx”对象是否active = true 都是可以直接找到对象的。
&&&&&& GameObject root = GameObject.Find("GameObject");&&&&&& &&&&&&&&& GameObject xxxx =&&root.transform.Find("xxxx").gameObject;&&&&&&&&&&xxxx.SetActive(true);
Find()方法只能直接去找子节点,如果你想找 孙节点,那么可以用”/“符号把层级关系隔开,找起来很方便。同样无论”xxxx”对象是否active = true 都是可以直接找到对象的。
&&&&GameObject cube =&&root.transform.Find("xxxx/Cube").gameObject;
值得注意的是,unity规定了比如父节点active = true 并且子节点的 active = true 都满足的情况下 才能全部显示。使用Transform.Find()可以很方便的获取游戏对象,因为有了游戏对象,那么它身上的脚本啊组件啊什么的都可以很方便的获取到。
但是Transform.Find()必须要保证你的顶级父对象的activity = true。举个例子,你做了一个场景有一些地图你在场景里面预先activie = false了, 你希望在游戏中的某个时间点把它们都打开 setActive(true)
你可以把“map”节点放在一个active = true的GameObject上,无论是关闭 或者 显示 代码中写起来都很方便。 假如你的map节点就是顶级节点,那么它一旦天生acive = false ,那么你将无法得到它的对象,更无法设置它的属性了。
GameObject root = GameObject.Find(“GameObject”);
GameObject map =
root.transform.Find(“map”).gameO
map.SetActive(true);
3. unity 还提供了几个获取游戏对象的方法,但是我个人觉得使用频率不高,这里也简单说两句。
GameObject.FindGameObjectsWithTag(“tag”)
GameObject.FindWithTag(“tag”)
根据一个标记来获取游戏对象,返回一个 或者 一个数组,我个人觉得这个两个方法没啥用,因为既然需要用到标记那么相比这个游戏对象必然是非常特殊的一个,所以我会把它存在内存中。
Object.FindObjectOfType
Object.FindObjectsOfType
Resources.FindObjectsOfTypeAll
根据一个类型返回Object,比如 GameObject 、Texture、Animation 、甚至还可以是你自己写的一个脚本 的范型。它找起来很方便,可以返回一个 或者一个数组。 我觉得这几个方法其实游戏中也没啥用,不过在编辑器中使用的确实很频繁,比如你要做批量检查场景的工具,查找场景中有没有使用某个特殊类型的对象。 或者查看内存的占用量,看看当前内存中那些Texture没有被释放掉。 等等。
还有一个方法,如果你知道自对象的索引,还可以用下面的方法来获取,参数是index的索引。
transform.GetChild(0)
找到了一个即使隐藏root节点gameObject也能进行查找的方法。
1234567891011121314151617181920212223242526
GameObject[] pAllObjects = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
&&&&&&&& foreach (GameObject pObject in pAllObjects)&&&&&&&& {
if (pObject.transform.parent != null)&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&& continue;&&&&&&&&&&&& }&
if (pObject.hideFlags == HideFlags.NotEditable || pObject.hideFlags == HideFlags.HideAndDontSave)&&&&&&&&&&&& {&&&&&&&&&&&&&&&& continue;&&&&&&&&&&&& }&
if (Application.isEditor)&&&&&&&&&&&& {&&&&&&&&&&&&&&&& string sAssetPath = AssetDatabase.GetAssetPath(pObject.transform.root.gameObject);&&&&&&&&&&&&&&&& if (!string.IsNullOrEmpty(sAssetPath))&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&& continue;&&&&&&&&&&&&&&&& }&&&&&&&&&&&& }&
Debug.Log(pObject.name);&&&&&&&& }
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!君,已阅读到文档的结尾了呢~~
Unity获取游戏对象实例教程
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Unity获取游戏对象实例教程
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口unity3d常用的游戏对象引用技巧
unity3d常用的游戏对象引用技巧
常用引用技巧
1.&&&当要获取某类标签名为“car”的游戏对象:
privateGameObject[]//声明汽车游戏对象数组
&&&&&&&&&&&&&&&&&& cars = GameObject.FindGameObjectsWithTag(&car&);//找到Tag为car的所有游戏对象
foreach(GameObject car
in cars) {//遍历汽车数组
&&&&&&&&&&&&&&&&&&&&&&&&&&& car.transform.RotateAround(Vector3.up,Time.deltaTime
*speed);//让所有的汽车绕Y轴自转
&&&&&&&&&&&&&&&&&& }
2.&&&全局变量容器使用PlayerPrefs:
PlayerPrefs.SetInt(&music&,musicIndex%2 + 1);//设置music
if(PlayerPrefs.GetInt(&music&)
!= 1 &&!GetComponent&AudioSource&().isPlaying) {//当music值不为2,且音乐没有播放
&&&&&&&&&&&&&&&&&&&&&&&&&&& GetComponent&AudioSource&().Play();//播放音乐
&&&&&&&&&& }
3.&&&限制鼠标在某一个区域运动,关联屏幕的坐标,与摄像头无关:
4.&&&&&& using UnityE
5.&&&&&& usingSystem.C
6.&&&&&& &
7.&&&&&& publicclassTest :
MonoBehaviour {
8.&&&&&& &
9.&&&&&& // Use this for initialization
10.&&& &&&&publicGameObject
11.&&& &&&&privatefloat horizR, vertR;//当前屏幕与默认屏幕宽、高比
12.&&& void Start () {
13.&&& &&&&&&&&test.transform.position =
newVector3(0,0,1);//限制区域z=1
17.&&& // Update is called once per frame
18.&&& void Update () {
19.&&& &&&&&&&&horizR =
Input.mousePosition.x /
20.&&& &&&&&&&&vertR =
Input.mousePosition.y /
21.&&& &&&&&&&&test.transform.position =
newVector3(horizR *100-50,vertR * 50-25,1);//区域长度为100,宽度为50,因此区域的左下角坐标为(-50,-25,
22.&&& &&&&&&&&
欢迎大家评论和交流!
我的热门文章
即使是一小步也想与你分享问一下U3D怎么获取物体的子物体啊?是游戏对象不是自物体组件
嘉鱼问一下怎么获取物体的子物体啊?是游戏对象不是自物体组件学习Unity鎏金哇卡开酷咧smithlon。。一样的概念吧Winergetchildren&学习UnitygetChild?嘉鱼就一个自物体子物体学习Unitygameobject.getChildren("progressbar")嘉鱼这样?学习Unity这不是获取子组件吗嘉鱼没你说的那个学习Unity看看api呢,好久不写了嘉鱼骗我明明有transform学习Unity??晴天小陈额。。。就是这个方法啊学习Unity晴天小陈你这样肯定报错啊这是个方法要输入下标的猎头A sunny day有想去金山&网易的&&帅哥美女么?&&美术&程序&&策划&&都有职位,&&经验要求2年+&&年薪15-100万&&接收简历邮箱:&&推荐朋友入职有重奖!学习Unitytransfrom不是得到位置属性那些吗嘉鱼直接gameobject。点不到那个方法学习Unity脚本挂在哪里的嘉鱼学习Unity嘉鱼算了我还是直接用transform。find把学习Unitygameobject.transform得到的是什么vector3?FC得到的事Transform嘉鱼没反应C_DragonTransform里面有Postion&&Rotation&&和Scale设置谁隐藏嘉鱼子节点物体学习Unity是啊,应该得到的是位置属性啊难道没有其他的findChildren?嘉鱼就是没反应学习Unity你需要百度晴天小陈ugui&按钮的响应区域怎么改FC把1改成0嘉鱼刚改haishibuxing还是不行
牛逼;跟摄像机无关;2D摄像机
根据&自己做一个逻辑判定根据平台;不能直接监听用户按下的是哪个键&然后我显示他的键码值吗?;
用手拿着物体&匀速旋转&再拿角尺量一下&转到你想要的角度就撒手;。。。
------分隔线----------------------------
赞助商链接
赞助商链接}

我要回帖

更多关于 unity获取子对象 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信