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);
}



,如需转载请自行联系原作者
相关文章
|
3月前
|
测试技术
Xpath层级定位方法实现find_element_by_xpath_axis
Xpath层级定位方法实现find_element_by_xpath_axis
23 0
|
Android开发 数据格式 JSON
android报错 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
      我在使用retrofit和Gson配合时,出现了这个问题,疑惑中乱七八糟瞎搞了一个下午没有解决。期间怀疑Gson解析不能使用泛型(因为我的解析使用了泛型),后来又觉得可能是我的关键字正好是解析器的某个关键字导致的异常,也打算过自定义Gson的解析过程,其实这些都不是。         第二天才搞明白,真正的问题是我的数据结构有问题,或者说我的解析出现了问题。  
4007 0
vuepress build提示YAMLException: end of the stream or a document separator is expected at line 7, colu
vuepress build提示YAMLException: end of the stream or a document separator is expected at line 7, colu
751 0
|
JavaScript
click group list in left launchpad
click group list in left launchpad
102 0
click group list in left launchpad
|
JavaScript Go
错误消息Parent objects have not been downloaded
错误消息Parent objects have not been downloaded
112 0
错误消息Parent objects have not been downloaded
使用代码创建ABAP transparent table
使用代码创建ABAP transparent table
110 0