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