【问题标题】:Unity 3D spawning a prefab from a ListUnity 3D 从列表中生成预制件
【发布时间】: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);
    }

The error looks like this

谢谢!

【问题讨论】:

  • 返回什么错误?请发布您的instantiate 代码
  • 什么是ai(如何定义)?
  • @UnholySheep List&lt;GameObject&gt; ai。您可以通过查看 ai.Countai.Add(obj); 来判断。 @OP你的问题不清楚,你甚至没有实例化任何东西。
  • @Programmer 它也可能是 List&lt;Object&gt;ArrayList 或一堆其他容器(或者甚至是恰好实现 Count 属性和 Add 方法的自定义) - IMO 这是一个相当重要的细节了解
  • @Programmer 我很抱歉,我只是恢复了那个不实例化的东西。我会稍微更新一下代码。

标签: c# unity3d


【解决方案1】:

您正在尝试实例化一个字符串 - 您需要在您的 ai 列表中实例化游戏对象。

Instantiate(ai[indexAI] ,spawn[indexSpawn].transform.position, spawn[indexSpawn].transform.rotation);

【讨论】:

  • 谢谢!我设法生成了我的预制件。我只是不知道正确的格式,因为我认为它需要一个字符串来生成预制件。我的不好,但非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多