unity中查找游戏对象的方法总结
1.通过对象名称
(1).transform.Find (string name)
通过名字查找子对象并返回它,找不到返回null
- 注意如果参数中只有对象名称那么仅能查找所有儿子中的对象看是否有相同名称的,而不能查找再后面的后代。
- 但是如果参数中包含 ‘/’ 字符,将像路径一样穿越层次去查找相应名称的物体。 eg:
Transform aFinger = transform.Find("LeftShoulder/Arm/Hand/Finger");
- 然而很多情况下我们不知道对象层级(比如模型过于复杂或者想灵活控制),我们可以用递归的方式去查找:
private Transform FindChildInTransform(Transform parent,string child)
{Transform childTF = parent.Find(child);if(childTF != null){return childTF;}for(int i=0;i<parent.childCount;i++){childTF=FindChildInTransform(parent.GetChild(i),child);}return null;
}
(2). transform.GetChild(int index)
通过索引返回一个变换的子对象(仅能找儿子对象), 索引必须小于该变换的Transform.childCount(子物体数量,从0开始计数),上面在递归查找子物体的方法中已经用到。
(3).transform.parent
返回当前对象的父物体,也可通过这个属性修改当前对象所属哪个父物体。
(4).GameObject.Find(string name)
静态方法,直接用类去调用即可,和transform.Find (string name)的区别就是这个方法会从hierarchy面板中所有的对象去遍历查找第一个与参数相同的名称,显然这是一个及其消耗性能的事情,官方都说除非迫不得已,建议不要在每一帧中使用这个函数。
同样这个方法也可以使用路径作为参数。eg:
若无父物体参数写成:hand = GameObject.Find("/Monster/Arm/Hand");
有的话写成:hand = GameObject.Find("Monster/Arm/Hand");
2.通过tag(标签)查找:
(1).GameObject.FindWithTag(string tag);
静态方法,返回标记为tag的第一个游戏对象,如果没有找到对象则为空。
标签必须在使用之前到标签管理器里面声明。如果标签不存在或为空字符串或传递null作为标签,将抛出Unity异常。
(2).GameObject.FindGameObjectsWithTag(string tag)
静态方法,返回标记为tag的所有激活的游戏对象列表(GameObject[]
),如果没有找到则为空。
标签这种标记方法真是太好了,不仅节约了查找时间,还能让游戏对象有具体的分类标记。
3.通过对象类型/组件查找游戏对象
Object.FindObjectOfType (Type type);
返回Type类型第一个激活的加载的对象。
这个方法同样会遍历所有的游戏对象去找第一个有参数组件的物体。不推荐在每帧使用这个函数。
Object.FindObjectsOfType (Type type);
返回Type类型的所有激活的加载的物体列表( Object[]
)。
同样十分消耗性能。。。不推荐在每帧使用这个函数。
获取组件的方式:
GetComponent、GetComponentInChildren、GetComponentInParent、GetComponents、GetComponentsInChildren、GetComponentsInParent
获取到有关对象的组件即可通过相应组件.gameObject属性获得想要的对象/对象列表。
unity中查找游戏对象的方法总结相关推荐
- Unity中获取游戏对象的组件
本文转载自Unity 得到游戏组件的常用的两种方法 常用的获取游戏对象组件的方法 获取当前挂载游戏对象的组件 index = this.GetComponent<******>(); // ...
- Unity中让游戏对象消失或隐藏的几种方法
GameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的 GameObject.Destr ...
- [Unity-25] Unity中让游戏对象消失或隐藏的几种方法
本文在其他博主博客的基础上修改而来. GameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存 ...
- Unity3d查找游戏对象
Unity3D查找游戏对象的方法分为三类:GameObject查找.transform查找.Resources查找 一.GameObject查找 (1)GameObject.Find 参数为名字或者路 ...
- unity中控制游戏物体移动最基本的三种方法
**unity**中控制游戏物体移动的最基本的三种方法 第一种移动方法-transform.Translate,游戏物体按照你给的方向和速度进行运动 代码如下: Public float speed; ...
- unity在脚本中获取游戏对象有三种_Unity3D中用于删除当前脚本所在游戏对象的代码是:_学小易找答案...
[单选题]297 . 乙醇的颜色为 [单选题]219 . 下列物质中含有极性共价键的是 [单选题]OnWillCreatAsset( string path) 上面命令的作用是: [填空题]针对单个或 ...
- Unity获取未激活游戏对象的方法
一.获取已激活游戏对象 1. Gameobject.Find("游戏对象名") //根据对象名直接获取游戏对象 这个方法可以找到指定的对象,但是一些缺陷.第一,如果场景中有重名 ...
- [Unity C#教程] 游戏对象和脚本
文章转载自:https://www.cnblogs.com/UnityYork/p/7704803.html [Unity C#教程] 游戏对象和脚本 博主最近在学习Unity,发现一个英文教程很好. ...
- 怎么在unity中测试游戏_Unity中的性能基准测试:如何开始
怎么在unity中测试游戏 As a Unity developer, you want your users to love playing your games, enjoying a smoot ...
最新文章
- pytorch优化器,学习率衰减学习笔记
- 解决Unity协程无法同步返回的问题
- 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归
- IOS学习笔记二十NSSet和NSMutableSet
- python3-matplotlib绘制散点图、绘制条形图
- [原创]django+ldap+memcache实现单点登录+统一认证
- Python花式编程:考试成绩分类统计(3种方法)
- linux幻灯片制作工具,PPT2010幻灯片制作实用小技巧
- otn与stn网络_光通信网络
- 小米手机刷机工具MiFlash
- vue3+tsx 踩坑
- 2014华中首届手游创意大赛
- Mybatis学习笔记(上)
- java配置jdk和jre_为什么要配置java环境变量?JDK和JRE的区别在哪里?
- python rgb转整数,如何在Python中将RGB转换为CMYK和反之亦然?
- 用python画一个动态樱花
- 熔断的产生及解决方案
- you和帆船(枚举)
- UML(系统分析与设计核心总结)+期末考试例题分析
- 大学物理(下)class1
热门文章
- 仓山工业机器人_2019年福建省机器人行业企业名录127家
- WordPress php升级到7.2提示Warning: Use of undefined constant Y – assumed ‘Y’ 问题解决
- 退出全屏快捷键Linux,linux清除全屏快捷键(Ctrl+L)
- 【Unity2D入门教程】简单制作战机弹幕射击游戏② C#编写 Player和Enemy脚本
- 春天的味道——四月周报
- 龙芯3a5000下编译nginx源码
- 四、文件管理(一)文件系统基础
- 再严重的感冒,马上就好【转】
- 5800XM上QQ、飞信死机问题解决方法
- 十年游戏老兵,如何开发出一款受索尼青睐的VR游戏?