我在Unity中有一个脚本,在我的赛车游戏中保存检查点。但我不确切知道赛道上有多少检查站。现在我被限制在5:
但是,我想允许地图制作者插入更多检查点。 这不起作用:
public List<GameObject> checkPoints = new List<GameObject>();
那么最好的方法是什么?
答案 0 :(得分:0)
不会定义一系列检查点吗?
public GameObject[] CheckPoints;
我目前无法访问Unity,但这应该允许您通过检查器输入任何(合理)数量的GameObjects到CheckPoints数组。
这在Unity Answers上类似于这个问题:http://answers.unity3d.com/questions/245024/public-array-of-gameobjects.html
在这里猜测,你的错误是List1' could not be found
吗?在这种情况下,您必须添加using System.Collections.Generic;
才能使用C#列表。
答案 1 :(得分:-2)
这:public List<GameObject> checkPoints = new List<GameObject>();
没有显示,因为它是GameObjects列表,而不是Vectors列表。用户无法手动输入GameObjects。您可以执行:public List<Vector3> checkPoints = new List<Vector3>();
然后只需遍历此列表并在运行时为每个位置执行Resource.Load(如果您无法解决这个问题,我可以输入一个示例)。
更加用户友好的解决方案是允许用户通过在世界中放置GameObject来添加检查点,而不必手动键入每个向量。例如,创建一个CheckPoint对象,并为其提供一个唯一的标记(例如:“CheckPointTag”),然后只需运行下面的方法来获取所有检查点位置:
public List<Vector3> GetCheckPoints()
{
GameObject[] objects = GameObject.FindGameObjectsWithTag("CheckPointTag");
List<Vector3> objectPos = new List<Vector3>();
foreach(GameObject object in objects)
objectPos.Add(object.transform.Position;
return objectPos;
}