Unity3d 动态创建变量名并实例化它们(Unity)

Unity3d 动态创建变量名并实例化它们(Unity),unity3d,instantiation,unityscript,Unity3d,Instantiation,Unityscript,嗨,我是unity的新手,我正在尝试为敌人创建AI脚本。在这门课上,我有一个路径点,敌人会通过生成一个随机数随机走到那里。最初我有四个路径点,但这是非常线性的。因此,我添加了更多内容,使其看起来好像敌人在漫无目的地四处走动,这可以从中看出一个例子。然后我又添加了20个左右的路径点来完成随机化,但我不想实例化它们中的每一个,所以我想知道是否有可能将它们安装到for循环中 到目前为止,我的代码是这样做的: private var player : GameObject; private var wa

嗨,我是unity的新手,我正在尝试为敌人创建AI脚本。在这门课上,我有一个路径点,敌人会通过生成一个随机数随机走到那里。最初我有四个路径点,但这是非常线性的。因此,我添加了更多内容,使其看起来好像敌人在漫无目的地四处走动,这可以从中看出一个例子。然后我又添加了20个左右的路径点来完成随机化,但我不想实例化它们中的每一个,所以我想知道是否有可能将它们安装到for循环中

到目前为止,我的代码是这样做的:

private var player : GameObject;
private var way0 : GameObject;
private var way1 : GameObject;
private var way2 : GameObject;
private var way3 : GameObject;

function Start()
{
    player = GameObject.Find("Player");
    way0 = GameObject.Find("way0");
    way1 = GameObject.Find("way1");
    way2 = GameObject.Find("way2");
    way3 = GameObject.Find("way3");
}

更新功能通过if语句处理所有其他问题。是的,您可以使用数组存储所需的航路点。像这样:

private var waypoints : Array;

function Start() {
  player = GameObject.Find("Player");
  waypoints = new Array();
  for (var i = 0; i < WaypointCount; ++i) {
     waypoints.Push(GameObject.Find("way" + i)); //Push the waypoint in the array.
  }
  DoSomethingWith(waypoints[0]); //This is "way0".
}
专用var航路点:阵列;
函数Start(){
player=GameObject.Find(“player”);
航路点=新阵列();
对于(变量i=0;i<航路点计数;++i){
waypoints.Push(GameObject.Find(“way”+i));//在数组中推送航路点。
}
DoSomethingWith(航路点[0]);//这是“航路0”。
}

其中
WaypointCount
是您希望推送的航路点数量。更确切地说,是满足您使用的命名模式的航路点数量。在您发布的示例中,
WaypointCount
为4。

这只是一个后续问题,当我使用此方法时,当我稍后使用它们时,对象会给出一个空引用。示例如下所示
var distance=Vector3.distance(player.transform.position,**航路点[变量]**.transform.position)变量只是推入函数的数字。但是它没有设置变量,因为它得到一个空引用@编辑了答案,很抱歉!