Unity开发备忘录000021:如何判断某一个对象是否有子对象
在项目开发中,有时要为某一对象(如X对象)动态添加一个子对象,这就需要判断X对象是否已经具有了子对象,因为是动态实时添加子对象,如果不做这样的判断以及相应的限制,就会给X对象添加上一批相同的子对象,这不是我们想要的。
那么,如何判断某一个对象是否有子对象呢?
其实也很简单,可通过计算该对象身上有多少个子对象来判断该对象是否有子对象,语句如下:
gameObj.GetComponentsInChildren<Transform>(true).Length
gameObj是被测对象,查找它的子对象可以通过GetComponentsInChildren<Transform>(true)实现,Length可视为有多少个对象。
但需要主意的是,gameObj本身也会被记录到Length之中,所以在判断gameObj对象是否有子对象时,应做如下书写(而不是写成==0)
if (gameObj.GetComponentsInChildren<Transform>(true).Length <=1)
{
}
例如,场景中放有三个对象:A、B、C,其中A对象中有一个子对象,B对象中有两个子对象,C对象没有子对象,如果我想只对没有子对象的对象添加一个名字为door的子对象,可用下面的语句段:
if (gameObj.GetComponentsInChildren<Transform>(true).Length <=1)
{
newGameObject = (GameObject)Instantiate(gameObject);
newGameObject.name = "door";
newGameObject.transform.parent = m_hit.transform;
}
测试如下:
操作之前的状态
运行后,当用鼠标点击A、B、C三个对象时,只有C对象添加了一个子对象door,其他对象都没有添加,如下:
测试成功,满足我们的需求。
忽然觉得程序员有点像上帝,如果某人没有孩子就赐给他一个孩子,如果已有孩子的家伙就不再给他更多的孩子了,嘿嘿!
老孙头课堂:https://edu.csdn.net/lecturer/3617
上一篇:Unity开发备忘录000020:Unity2019如何切换成中文界面
下一篇:Unity开发备忘录000022:Unity许可证无效,怎么办?
Unity开发备忘录000021:如何判断某一个对象是否有子对象相关推荐
- Unity开发备忘录000028:Bolt无代码做游戏——控制角色行走
1. 添加角色 (1)添加地面碰撞器 在添加角色之前,先添加一个地面碰撞器,否则添加UnityChan角色后,由于重力的作用,她将坠入深渊. 创建一个空对象,更名为CollierOnGround,为其 ...
- Unity开发备忘录000006:用Unity标准着色器构建金属材质效果(二)
按照Unity开发备忘录000005:用Unity标准着色器构建金属材质效果(一)所介绍的方法,我们又做了一个如下的模型渲染. 在此基础上我们再给它加一个高度贴图,其立体感的细节会更加丰富,如下图: ...
- Unity开发备忘录000005:用Unity标准着色器构建金属材质效果(一)
网上有很多第三方开发的构建金属材质的Unity包,但其实Unity自带的标准着色器Standard就可以调出不错的金属材质效果. 首先,建一个Unity工程,并创建一个球体对象,为了效果明显再添加一个 ...
- Unity开发备忘录000007:Unity2017发布WebGL版应用所需配置
1.打开Build Settings面板(File→Build Settings...),选择WebGL平台,点击Switch Platform按钮切换平台: 2.点击Player Settings. ...
- unity开发入门_Unity游戏开发终极入门指南
unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...
- Unity开发《一起来捉妖》教程 | 3.随机妖怪位置及旋转提示
洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"智哥,我找了个小精灵的模型,嘿嘿,不过我经常运行的时候找不到模型在哪,怎么办?&quo ...
- Unity开发《一起来捉妖》教程 | 2.用摄像头图像做背景
洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"我们接下来是不是需要将显示融合到屏幕上,才能称得上是AR呢?" 大智:&qu ...
- 使用unity开发答题系统
该项目的代码没有什么坑,工程下载下来直接使用即可,工程下载链接:https://download.csdn.net/download/qq_37491893/10922322 忘记做自适应了,使用的分 ...
- Unite 2017 | 使用Unity开发HoloLens应用实战技巧(下)
昨天我们分享了<运用Unity开发HoloLens应用实战技巧(上)>,今天下篇将讲解Unity开发HoloLens应用的全息模拟器与交互设计. 附演讲的现场视频(时长30分钟,流量党随意 ...
最新文章
- css3实现不同进度条
- 计算机尖端技术,不可思议的尖端技术:Top10
- java object save,通过ObjectOutputStream发送文件,然后将其保存在Java中?
- 第十一章 “她”值多少钱
- Jar包部署-设置打包方式为jar
- 当.NET遇到机器学习
- linux 文件按时间 函数,[Linux文件属性]使用utime函数操作文件的时间参数
- 阿里云助力浙江大学信息化建设,以实时数据驱动校园智能管理
- solr hdfs solr.in.sh
- linux用户和用户组及权限管理
- Scrapy框架学习(二)
- 企业常用的RPC框架比较
- 拓端tecdat|R语言使用混合模型进行聚类
- 数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案
- jeesit框架通过jBox获取弹窗信息
- 【图解算法】彻底搞懂(括号匹配)——图解带你直击本质
- 泰克TDS3054B示波器技术指标
- easyui手风琴菜单
- audio实现歌词同步
- 对 mysql_init 未定义的引用_解析:以mysql_开始的未定义引用错误