如果我有许多预制件并且我想要实例化它们,那么如何在不重写相同代码的情况下进行实现。
我认为使用循环然后调用Instantiate,但所有预制件都是不同的名称,那么如何将它们放在列表中呢?
for(int i =0; i < size; i++)
Instantiate(prefabName);
答案 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