1、判断物体的Layer是否满足条件
如果目标Layer不存在/不相等,返回值是-1
if (LayerMask.NameToLayer("目标layer值") == -1){}
2、代码修改物体的Layer值
transform.gameObject.layer = LayerMask.NameToLayer("想要设置的layer值");
transform.gameObject.layer = LayerMask.NameToLayer("想要设置的layer值");
3、使用 foreach 遍历所有子物体进行赋值
完整代码
/// <summary>
/// 动态更改所有子物体Layer
/// </summary>
/// <param name="trans"></param>
/// <param name="targetLayer"></param>
private void ChangeLayer(Transform trans, string targetLayer)
{
if (LayerMask.NameToLayer(targetLayer) == -1)
{
Debug.Log("Layer中不存在,请手动添加LayerName");
return;
}
//遍历更改所有子物体layer
trans.gameObject.layer = LayerMask.NameToLayer(targetLayer);
foreach (Transform child in trans)
{
ChangeLayer(child, targetLayer);
}
}