1 回答
TA贡献1785条经验 获得超8个赞
为了允许您将多个生物名称传递给Spawner,您应该Spawner像这样更改构造函数:
[Constructable]
public Spawner(params string[] creatureName ) : base( 0x1f13 )
{
InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, creaturesName.ToList() );
}
然后MakeSpawner像这样修改你的方法:
private static void MakeSpawner(string[] types, int x, int y, int z)
{
if (types.Length == 0)
return;
ClearSpawners(x, y, z);
Spawner sp = new Spawner(types);
sp.Count = ICount;
sp.HomeRange = HomeRange;
sp.MoveToWorld(new Point3D(x, y, z), Map.Sample);
if (TotalRespawn)
{
sp.Respawn();
sp.BringToHome();
}
++m_Count;
}
注意:params修饰符允许您将单个字符串 ( new Spawner("a"))、多个字符串 ( new Spanwer("a", "b", "c")) 或字符串数组 ( new Spanwer(types)) 传递给同一方法。我还稍微修改了您的代码,以利用 LINQ( using System.Linq) 转换为List<string>.
现在,我唯一担心的是ClearSpawners(x, y, z);:如果您添加多个具有相同 x,y,z 的单独生成器,它将(可能)清除旧生成器。我猜想,因为这些是 Spawner,但可能没问题,而且每个位置只有一个 Spawner。
- 1 回答
- 0 关注
- 207 浏览
添加回答
举报