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

C# 如何在不知道名称的情况下实例化敌人的预制件,c#,unity3d,instantiation,C#,Unity3d,Instantiation,如果我有很多预置,并且我想实例化它们,那么我如何在不重写相同代码的情况下实现它们呢 我认为使用循环然后调用实例化,但是所有的预置都是不同的名称,所以我怎么能把它们放在列表中呢 for(int i =0; i < size; i++) Instantiate(prefabName); for(int i=0;i

如果我有很多预置,并且我想实例化它们,那么我如何在不重写相同代码的情况下实现它们呢

我认为使用循环然后调用实例化,但是所有的预置都是不同的名称,所以我怎么能把它们放在列表中呢

for(int i =0; i < size; i++)
   Instantiate(prefabName);
for(int i=0;i
您需要创建一个基类,您所有的
敌人都可以继承它

public interface Enemy
{
}
然后让你所有的敌人预制从中继承

public class Red_Enemy : MonoBehaviour, Enemy
{
}
然后在生成敌人的类中,您可以创建一个数组

public Enemy [] list;

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

您可以通过拖放的方式通过编辑器简单地填充
列表。

您可以为敌人使用一个通用名称,如
E1、E2、E3…
,并将敌人的预置保存在一个目录中,如
预置
资源
预置名称

然后你可以使用循环作为

for(int i =0; i < size; i++)
   Instantiate(Resources.Load("E"+i), position, rotation); 
   // "E"+i for E1, E2 ...
for(int i=0;i
注意:
Resources.Load()
查找路径,例如
Assets/Resources