我正在制作策略游戏并遇到了一个问题。基本上,我不知道如何处理动态创建我需要的单位。我应该使用一些大的switch语句还是有更理想的解决方案?
答案 0 :(得分:2)
我假设,您实际上是在讨论在运行时实例化不同类的类。可能性很多:)
一个选项是:
您管理地图(基本上是一个对象),其中键是“单位”的标识符,值是类对象,如下所示:
var unitMap:Object = {
"hero": UserGameCharacter,
"enemy": NPCharacter,
"chicken": ChickenCharacter
};
请注意,值是类对象,而不是实例。此外,让我们假设,所有字符类都扩展了一个基本的Character类或实现了一个Character接口。现在,当你想要实现一个“单位”时,你会这样做:
var newCharacter:Character = new (unitMap["hero"])();
这样,您就不再需要switch语句了。希望,这有助于作为一个起点。
答案 1 :(得分:1)
如果您希望动态创建需要构建工作的多种类型的实体,请尝试始终使用抽象工厂。它将使您的游戏更加灵活和模块化。特别是对于策略游戏,您可能拥有构建每个单元的复杂逻辑。看看下面的文章:
http://www.as3dp.com/2010/11/saturated-abstract-factory-1-wholesale-creation/
答案 2 :(得分:1)
您可能还想查看PushButton引擎,它将提供一些开箱即用的功能来处理所有不同的游戏对象。它具有依赖注入功能,这是一种很好的做法,可以解除对象的使用和创建。