Unity:获取最后一次克隆实例化的位置object

Unity: Get the position of the last cloned instantiated object

我正在尝试使用 Unity 为 Android 创建一个无限大的场地。尝试使用 object 池来实现地面重复,但事实证明有点棘手。 我可以沿着 x 轴实例化和创建克隆。

我想要实现的是获取上次克隆的 object 的位置并将其设置为新位置并在新位置创建新的 object 并再次实例化。

我需要使用转换 parent 吗? 我的做法正确吗?

下面的代码。

public class InfiniteGround : MonoBehaviour
{
    public Transform ground1Obj;
    private int count;
    private Vector3 lastPosition;
   
    void Start()
    {
        count = 0;
        for (int i = 0; i < 10; i++)
        {
            Instantiate(ground1Obj, new Vector3(i * 100f, 0, 0), Quaternion.identity);
            count++;
            if (count == 10)
            {
                lastPosition = ground1Obj.position;
                Debug.Log("Last Position: " + lastPosition);
            }
                
        }

    }
}

对于实例化,它应该可以工作,但不是您想要的方式。如果你想拥有无限的地面,你应该根据玩家的位置添加地面

  • 如果玩家向前移动,在他之前实例化新的地面并且 摧毁他身后的旧地。
  • 如果玩家向后移动,在他身后实例化新的地面,然后 摧毁他面前的旧地

如果您想更改密码。我会:

  1. 更改函数名称,例如 (InstantiateFloor),因为您想在开始时多次调用它
  2. 根据玩家位置调用函数(如上所述)
  3. 只需实例化 1 个大地板(而不是 10 个较小的)并占据它的位置

为什么不使用实例化返回的游戏对象?

GameObject newObject = Instantiate(ground1Obj, new Vector3(i * 100f, 0, 0), Quaternion.identity);
count++;

if (count == 10)
    {
        lastPosition = newObject .position;
        Debug.Log("Last Position: " + lastPosition);
    }