如何将子项附加到层次结构中的父对象

时间:2017-01-09 14:32:24

标签: c# unity3d

我有一些物体,一个叫做“父母”,一个叫做“儿童”(图中的第一个)。如何在运行时使“Child”对象成为“Parent”对象的实际子对象(图中的Nr.2)?

image

2 个答案:

答案 0 :(得分:5)

这样的事情应该有效:

public GameObject Parent;
public List<GameObject> Childs;

public void SetParent(){
    foreach(var child in Childs){
        child.transform.SetParent(Parent, false);
    }
}

编辑SetParent的第二个参数告诉Unity保留对象的世界参数:

  

worldPositionStays:如果为true,则修改父亲相对位置,比例和旋转,使对象保持与以前相同的世界空间位置,旋转和缩放。

答案 1 :(得分:2)

许多方法之一是:

创建一个类来保存任意数量的Child对象。

public class Children: List<Child> {}

然后,将属性添加到该类型的Parent类

public class Parent
{
    public Children Children { get; set; }

}

然后只需将3个Child对象添加到Children Property

var p = new Parent();
p.Children = new Children();
p.Children.Add(new Child());
p.Children.Add(new Child());
p.Children.Add(new Child());

访问Child对象,就像访问任何其他属性一样

var child1 = p.Children[0];
var child2 = p.Children[1];
var child3 = p.Children[2];

foreach( var c in p.Children)
   //.... do something