Unity查找游戏物体的六种方式详解_第1页
Unity查找游戏物体的六种方式详解_第2页
Unity查找游戏物体的六种方式详解_第3页
Unity查找游戏物体的六种方式详解_第4页
Unity查找游戏物体的六种方式详解_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Unity查找游戏物体的六种方式详解和上面根据标签查找的逻辑差不多。

GameObject.FindObjectOfType类型:根据类型(组件/自定义脚本)查找并返回这个类。

GameObject.FindObjectsOfType类型():根据类型(组件/自定义脚本)查找当前场景中所有这个类并返回一个这个类的数组。

voidFindObjectOfType()

CameratypeCamera=GameObject.FindObjectOfTypeCamera

Debug.Log("根据类型查找物体,是否查到:"+(typeCamera!=null));

Transform[]typeTransArr=GameObject.FindObjectsOfTypeTransform

for(inti=0;itypeTransArr.Length;i++)

Debug.Log("根据类型查找到的物体名称:"+typeTransArr[i].name);

FindObjectOfType()得出结论:

查找不到禁用物体,使用时需确认要查找的物体是启用(显示)状态;

查找场景中不存在类型时会返回null,不会报错;

通常使用情况为:初始化时在一个脚本中获取另一个脚本的引用,通过这种形式查找。【后多被单例取代】

四,Transform.Find()

查找挂载物体父级,同级,子级物体:

voidTransformFind()

//找父级

Transformparent=transform.Find("Root");

Debug.Log("找父级物体,是否找到:"+(parent!=null));

//找同级

TransformselfObj=transform.Find("Parent_1");

Debug.Log("找同级物体,是否找到:"+(selfObj!=null));

//找子级

Transformchild=transform.Find("Child");

Debug.Log("找子级物体,是否找到:"+(child!=null));

//找子级隐藏物体

TransformchildHide=transform.Find("ChildHide");

Debug.Log("找子级隐藏物体,是否找到:"+(childHide!=null));

找多层级子物体:

//找二级子物体

Transformchild_1=transform.Find("Child_1_1");

Debug.Log("找二级子物体参数只写名称,是否找到:"+(child_1!=null));

//找二级子物体

Transformchild_1_1=transform.Find("Child/Child_1_1");

Debug.Log("找二级子物体参数写全路径,是否找到:"+(child_1_1!=null));

Find()得出结论:

只能找其子物体,不能找其同级或更高层级物体

找子物体时不考虑是否被禁用(隐藏)

找多层子物体时需写全路径(否则即使存在也找不到)

五,Transform.FindObjectOfType()

经过测试和GameObject.FindObjectOfType()没什么区别,测试结果一致,测试代码和截图就不发处理占地方了。

测试时我发现GameObject.FindObjectsOfType类型()和Transform.FindObjectsOfTypeTransform()被合并了,应该说完全是一个方法了,根据下图可以看到,我虽然前打的是Transform的标签,但是它是灰色的,鼠标放上去看到方法引用的却是GameObject.FindObjectsOfType。

得出结论:

Transform.FindObjectOfType()和GameObject.FindObjectOfType()使用方式一样,结果也没有区别…

六,transform.GetChild()

Transform.GetChild()是找子物体的方法,也是我个人比较喜欢用的方式,弊端是不能随意修改游戏物体的层级关系。

使用起来也很简单

比如:找一级子物体的第一个物体

Transformchild1=transform.GetChild(0);

找一级子物体的第一个物体的第三个子物体

Transformchild1=transform.GetChild(0).GetChild(2);

使用方式:几个层级就几个GetChild(),参数就是当前层级的第几个物体(从0开始)

使用拓展:

遍历子物体:

for(inti=0;itransform.childCount;i++)

Debug.Log(transform.transform);

获取当前物体的父物体transform.parent

获取当前物体的根物体transform.root

transform.GetChild()使用总结:

以自身为基础,查找子物体(注意索引从0开始,写多报错)

可以使用trans

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论