问题遇到的现象和发生背景
Unity使用递归出现场景父子级错误,但没代码里父子级没问题
问题相关代码,请勿粘贴截图
父类所挂载的类
public class Create_Circle_Sup : MonoBehaviour
{
private void Start()
{
name = this.gameObject.name;
Create_Child();
}
public String name
{
private set { this.gameObject.name = value; }
get { return gameObject.name; }
}
//递归层级
private int recurve_Layer=0;
//最大递归层级
[Header("最大递归层级")] public int recurve_Layer_Max;
//同级最大数量
[Header("最大层级数量")]public int peer_Max;
//子对象
[Header("子对象链接")] public GameObject child_Object;
//下级对象
private List<GameObject> child_GameObject = new List<GameObject>();
void Create_Child()
//创建子级函数
{
for (int i = 0; i < peer_Max; i++)
{
//创建对象
child_GameObject.Add(GameObject.Instantiate(child_Object));
child_GameObject[0].GetComponent<Create_Circle_Sub>().Initialize_Self(
this.transform,
(this.name + $"_{i}号"),
this.recurve_Layer + 1,
recurve_Layer_Max,
i,
this.peer_Max);
}
}
}
子类所挂载的类
public class Create_Circle_Sub : MonoBehaviour
{
//名字
public String name
{
private set { this.gameObject.name = value;}
get { return gameObject.name; }
}
public String parentObject;
//递归层级
public int recurve_Layer { private set; get; }
//最大递归层级
public int recurve_Layer_Max { private set; get; }
//同级序号
public int peer_Number { private set; get; }
//同级最大数量
public int peer_Max { private set; get; }
//下级对象
private List<GameObject> child_GameObject=new List<GameObject>();
public void Initialize_Self(Transform parent,String name,int recurve_Layer,int recurve_LayerMax,int peer_Number,int peer_Max)
//初始化自身
{
Debug.Log($"自身对象:{this.gameObject.name},父级对象:{parent.name}");
#region 初始化自身数据
//设定父级
this.transform.parent=parent;
//设定名字
this.name = name;
//设定递归图层
this.recurve_Layer = recurve_Layer;
//设定同级序号
this.peer_Number = peer_Number;
//设定最大同级数量
this.peer_Max = peer_Max;
this.parentObject = parent.name;
#endregion
//如果递归层级小于最大值
if (recurve_Layer< recurve_LayerMax)
{
//就创建子对象
Create_ChildObject();
}
}
void Create_ChildObject()
//创造子对象
{
for (int i = 0; i < peer_Max; i++)
{
//创建对象
child_GameObject.Add(GameObject.Instantiate(this.gameObject));
child_GameObject[0].GetComponent<Create_Circle_Sub>().Initialize_Self(
this.transform,
(this.name + $"_{i}号"),
this.recurve_Layer + 1,
recurve_Layer_Max,
i,
this.peer_Max);
}
}
}
运行结果及报错内容
运行结果: