我会建议 Raphael 解决方案,但在某些情况下,如果您要处理预制件问题,这可能会很困难。
实现此目的的其他方法是创建您的自定义编辑器以迭代您的场景并创建此 ScriptableObject。
我将此代码用于类似的事情
GameObject __PARENT = GameObject.Find("__PARENT");
Vector3 centroid = Vector3.zero;
Transform[] childs = __PARENT.transform.GetComponentsInChildren<Transform>();
foreach (Transform go in childs)
{
Debug.Log(go.name);
centroid += go.position;
}
centroid /= (__PARENT.transform.childCount);
GameObject centerPivotObject = new GameObject();
centerPivotObject.name = "CenterPivotObject";
centerPivotObject.transform.position = centroid;
foreach (Transform go in childs)
{
go.parent = centerPivotObject.transform;
}
在我的情况下,我试图在父对象中居中枢轴,但是您可以使用 this 在您的父游戏上进行迭代并使用它创建您的 ScriptableObject
https://wiki.unity3d.com/index.php/CreateScriptableObjectAsset