在项目开发中,有时要为某一对象(如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:如何判断某一个对象是否有子对象相关推荐

  1. Unity开发备忘录000028:Bolt无代码做游戏——控制角色行走

    1. 添加角色 (1)添加地面碰撞器 在添加角色之前,先添加一个地面碰撞器,否则添加UnityChan角色后,由于重力的作用,她将坠入深渊. 创建一个空对象,更名为CollierOnGround,为其 ...

  2. Unity开发备忘录000006:用Unity标准着色器构建金属材质效果(二)

    按照Unity开发备忘录000005:用Unity标准着色器构建金属材质效果(一)所介绍的方法,我们又做了一个如下的模型渲染. 在此基础上我们再给它加一个高度贴图,其立体感的细节会更加丰富,如下图: ...

  3. Unity开发备忘录000005:用Unity标准着色器构建金属材质效果(一)

    网上有很多第三方开发的构建金属材质的Unity包,但其实Unity自带的标准着色器Standard就可以调出不错的金属材质效果. 首先,建一个Unity工程,并创建一个球体对象,为了效果明显再添加一个 ...

  4. Unity开发备忘录000007:Unity2017发布WebGL版应用所需配置

    1.打开Build Settings面板(File→Build Settings...),选择WebGL平台,点击Switch Platform按钮切换平台: 2.点击Player Settings. ...

  5. unity开发入门_Unity游戏开发终极入门指南

    unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...

  6. Unity开发《一起来捉妖》教程 | 3.随机妖怪位置及旋转提示

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"智哥,我找了个小精灵的模型,嘿嘿,不过我经常运行的时候找不到模型在哪,怎么办?&quo ...

  7. Unity开发《一起来捉妖》教程 | 2.用摄像头图像做背景

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"我们接下来是不是需要将显示融合到屏幕上,才能称得上是AR呢?" 大智:&qu ...

  8. 使用unity开发答题系统

    该项目的代码没有什么坑,工程下载下来直接使用即可,工程下载链接:https://download.csdn.net/download/qq_37491893/10922322 忘记做自适应了,使用的分 ...

  9. Unite 2017 | 使用Unity开发HoloLens应用实战技巧(下)

    昨天我们分享了<运用Unity开发HoloLens应用实战技巧(上)>,今天下篇将讲解Unity开发HoloLens应用的全息模拟器与交互设计. 附演讲的现场视频(时长30分钟,流量党随意 ...

最新文章

  1. css3实现不同进度条
  2. 计算机尖端技术,不可思议的尖端技术:Top10
  3. java object save,通过ObjectOutputStream发送文件,然后将其保存在Java中?
  4. 第十一章 “她”值多少钱
  5. Jar包部署-设置打包方式为jar
  6. 当.NET遇到机器学习
  7. linux 文件按时间 函数,[Linux文件属性]使用utime函数操作文件的时间参数
  8. 阿里云助力浙江大学信息化建设,以实时数据驱动校园智能管理
  9. solr hdfs solr.in.sh
  10. linux用户和用户组及权限管理
  11. Scrapy框架学习(二)
  12. 企业常用的RPC框架比较
  13. 拓端tecdat|R语言使用混合模型进行聚类
  14. 数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案
  15. jeesit框架通过jBox获取弹窗信息
  16. 【图解算法】彻底搞懂(括号匹配)——图解带你直击本质
  17. 泰克TDS3054B示波器技术指标
  18. easyui手风琴菜单
  19. audio实现歌词同步
  20. 对 mysql_init 未定义的引用_解析:以mysql_开始的未定义引用错误

热门文章

  1. 如何制作精美的GIF动图
  2. Daimayuan Online Judge 蒟蒻
  3. 【附源码】Python计算机毕业设计网络求职招聘系统
  4. MySQL数据库--01--一头扎进大沙漠-数据库概述
  5. 大学生使用计算机情况,大学生电脑使用情况调查报告.doc
  6. 【新浪面试题】如何技高一筹解决查找单链表中的倒数第k个结点
  7. 1.spring security简单的demo-适合萌新
  8. Leetcode T48:旋转图像
  9. important basic knowledge of SAS
  10. BOM中window简介