C# 如何为Unity将多LPE游戏对象分配到一个?

C# 如何为Unity将多LPE游戏对象分配到一个?,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,基本上我有一个游戏,玩家从一辆卡车跳到其他卡车,我想在玩家死后重置我的卡车位置,这样他就可以重新开始关卡。一些不相关的代码,例如我删除的玩家移动,因为我没有必要包含这些代码。到目前为止,代码是这样的: using System; using UnityEngine; public class PlayerMovement : MonoBehaviour { Vector3 truckStart; Vector3 startPoint; //Assingables

基本上我有一个游戏,玩家从一辆卡车跳到其他卡车,我想在玩家死后重置我的卡车位置,这样他就可以重新开始关卡。一些不相关的代码,例如我删除的玩家移动,因为我没有必要包含这些代码。到目前为止,代码是这样的:

using System;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    Vector3 truckStart;
    Vector3 startPoint;

    //Assingables
    public GameObject Truck;
    public GameObject Player;
    public GameObject Spawn;
    public GameObject lava;


    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
        startPoint = Spawn.transform.position;
        truckStart = Truck.transform.position;
    }

    private void OnCollisionEnter(Collision collisionInfo)
    {
        if (collisionInfo.collider.gameObject == lava)
        {
            Player.transform.position = Spawn.transform.position;
            Truck.transform.position = truckStart;
        }
    }

我如何编写代码,使我的卡车不再只有一个游戏对象,而是有多个?我曾尝试使用标签查找游戏对象,但当我这样做时,它不会让我重置其位置。

不确定您想要什么,但似乎并不难。正如您已经知道如何通过inspector在Unity中分配可序列化的值一样,只需声明一个
Truck
数组,如下所示:

private Vector3[]卡车起点;
公共游戏对象[]卡车;
而且,作为通用的Unity编码技巧,以下内容更好(除非您必须从其他类访问它):

[序列化字段]
私人游戏对象[]卡车;
这使得
卡车
无法从其他代码访问,但仍然可以通过inspector序列化

初始化如下:

private void Start()
{
卡车起点=新矢量3[卡车长度];
对于(int i=0;i
然后像这样重置:

专用void onCollisionCenter(碰撞碰撞信息)
{
如果(collisionInfo.collider.gameObject==lava)
{
Player.transform.position=Spawn.transform.position;
对于(int i=0;i
老兄,太感谢你了。我花了好几个小时试图找出如何使用数组和其他东西,而你在一秒钟内就帮我做到了。谢谢你…代码似乎起作用了。(但你怎么敢否决我的问题)