当前位置: 首页 > news >正文

foreach Transform 同时chils.setParent引起的bug


文章目录[点击展开](?)[+]


Transform继承自IEnumerable,可以对它进行迭代。但当你在迭代的同时,又对child进行setParent操作时,会出现意想不到的结果。

下面是我使用foreach和getchild得到的bug,及解决办法。

使用foreach

当在使用foreach获取所有的child,并且同时修改child的parent为其它,会出现只能修改部分,但不会报错。

复制代码
foreach (var tran in rideEffect.InstanceAsset.transform)
{
    var child = tran as Transform;
    if (child == null)
    {
        continue;
    }
    KTool.SetChild(child, boneTrans.transform);
}
复制代码

 

使用GetChild

使用getchild获取每一个child,同时设置child的parent为其它时,会报:Transform child out of bounds

复制代码
var childCount = rideEffect.InstanceAsset.transform.childCount;
for (int idx = 0; idx < childCount; idx++)
{
    var child = rideEffect.InstanceAsset.transform.GetChild(idx);
    KTool.SetChild(child, boneTrans.transform);
}
复制代码

 

解决办法

添加一个扩展方法获取所有的childs,存起来。

或者也可以不写扩展方法,直接使用List<Transform>存child。

复制代码
public static IEnumerable<Transform> GetChildren(this Transform tr)
{
    List<Transform> children = new List<Transform>();
    foreach (Transform child in tr)
    {
        children.Add(child);
    }
    // You can make the return type an array or a list or else.
    return children as IEnumerable<Transform>;
}
复制代码

调用方法,这样就可以修改完全部的child

var childs = rideEffect.InstanceAsset.transform.GetChildren();
foreach (var child in childs)
{
    KTool.SetChild(child, boneTrans.transform);
}



,如需转载请自行联系原作者

相关文章:

  • python笔记7-多线程threading之函数式
  • org.codehaus.mojo:build-helper-maven-plugin:1.4:add-source (execution: add-sourc
  • CentOS6.X内核升级
  • PDF 补丁丁 0.6.0.3383 版发布(修复书签编辑器坐标定位错误的问题)
  • 虚拟机的安装和连接
  • JS函数式编程 数组部分风格 ES6版
  • linux入门常用操作
  • VTP
  • powershell 性能测试小脚本
  • hihoCoder1603
  • jsp:choose 、when 和 和 otherwise 一组标签
  • “浏览器模式”和“文档模式”之间的区别
  • ​VRRP 虚拟路由冗余协议(华为)
  • h5 meta 移动
  • JQ-weui中的日期选择控件关于时间段的设置!
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Angular2开发踩坑系列-生产环境编译
  • CentOS7简单部署NFS
  • CSS3 变换
  • HTML中设置input等文本框为不可操作
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript创建对象的四种方式
  • laravel with 查询列表限制条数
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mockjs让前端开发独立于后端
  • Solarized Scheme
  • vue-cli3搭建项目
  • 前端学习笔记之观察者模式
  • 一份游戏开发学习路线
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • postgresql行列转换函数
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (31)对象的克隆
  • (C语言)球球大作战
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)ORM
  • (转)VC++中ondraw在什么时候调用的
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • *1 计算机基础和操作系统基础及几大协议
  • .net 无限分类
  • .net知识和学习方法系列(二十一)CLR-枚举
  • ??myeclipse+tomcat
  • @Autowired和@Resource的区别
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @RequestMapping用法详解
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [2016.7 day.5] T2