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

本文关键字:实例化 情况下 方预制 不知道 | 更新日期: 2023-09-27 18:32:12

如果我有很多预制件并且我想将它们全部实例化,那么如何在不必重写相同代码的情况下做到这一点。

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

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

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

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

public interface Enemy
{
}

然后让你所有的敌人预制件继承自此。

public class Red_Enemy : MonoBehaviour, Enemy
{
}

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

public Enemy [] list;
foreach(Enemy e in list)
   Instantiate(e);

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

您可以使用

通用名称(如E1, E2, E3...)来表示敌人,并将敌人预制件保留在目录上,例如Prefabs> Resources> PrefabName 然后你可以将循环用作,

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

注意:Resources.Load()查找路径,例如 Assets/Resources

相关文章: