如何在不知道名称的情况下实例化敌人预制件

时间:2014-11-26 03:04:33

标签: c# unity3d instantiation

如果我有许多预制件并且我想要实例化它们,那么如何在不重写相同代码的情况下进行实现。

我认为使用循环然后调用Instantiate,但所有预制件都是不同的名称,那么如何将它们放在列表中呢?

for(int i =0; i < size; i++)
   Instantiate(prefabName);

2 个答案:

答案 0 :(得分:2)

您需要创建一个所有Enemies继承自的基类。

public interface Enemy
{
}

然后让你所有的敌人预制件从中继承。

public class Red_Enemy : MonoBehaviour, Enemy
{
}

然后在产生Enemies的类中,你可以创建一个数组。

public Enemy [] list;

foreach(Enemy e in list)
   Instantiate(e);

您可以通过拖放操作简单地通过编辑器填充list

答案 1 :(得分:0)

您可以为敌人使用E1, E2, E3...等通用名称,并将敌人的预制件放在 Prefabs&gt;等目录上。 Resources&GT; PrefabName 然后你可以使用循环,

for(int i =0; i < size; i++)
   Instantiate(Resources.Load("E"+i), position, rotation); 
   // "E"+i for E1, E2 ...

注意:Resources.Load()会查找Assets/Resources

等路径