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
老兄,太感谢你了。我花了好几个小时试图找出如何使用数组和其他东西,而你在一秒钟内就帮我做到了。谢谢你…代码似乎起作用了。(但你怎么敢否决我的问题)