【发布时间】:2017-09-07 23:37:28
【问题描述】:
我制作了一个脚本,它从我的 Resources/ai 文件夹中加载预制件并循环最多五次并生成一个随机索引号。它成功地将我的预制件加载为游戏对象,并根据列表的计数生成随机索引。
但是,由于 Instatiate 命令在我编码时确实返回了错误,因此在将我的预制件生成到我的场景时遇到了麻烦。
我尝试过通过list[index].name 甚至list[index].toString() 获取预制件名称的方法,但它不起作用。 (注:list 代表一个列表的变量index 只是一个用于抓取列表中游戏对象的索引。这不是实际代码)。
如何使用列表将加载的 GameObject 预制件生成到我的场景中?
我当前的代码:
public List<GameObject> ai;
public GameObject[] spawn;
int indexAI;
int indexSpawn;
private void Start()
{
var res = Resources.LoadAll<GameObject>("ai/");
foreach (GameObject obj in res)
{
ai.Add(obj);
}
for (int x=0; x<5; x++)
{
indexAI = UnityEngine.Random.Range(0,ai.Count);
indexSpawn = UnityEngine.Random.Range(0, spawn.Length);
string name = ai[indexAI].name;
Debug.Log(name);
//I am currently using this kind of format since this is what I know for now.
Instantiate(name,spawn[indexSpawn].transform.position,spawn[indexSpawn].transform.rotation);
}
谢谢!
【问题讨论】:
-
返回什么错误?请发布您的
instantiate代码 -
什么是
ai(如何定义)? -
@UnholySheep
List<GameObject> ai。您可以通过查看ai.Count和ai.Add(obj);来判断。 @OP你的问题不清楚,你甚至没有实例化任何东西。 -
@Programmer 它也可能是
List<Object>或ArrayList或一堆其他容器(或者甚至是恰好实现Count属性和Add方法的自定义) - IMO 这是一个相当重要的细节了解 -
@Programmer 我很抱歉,我只是恢复了那个不实例化的东西。我会稍微更新一下代码。