2

我正在为移动平台开发一款游戏,其中内存始终是一个问题。

我正在使用一个基本的抽象类敌人。所有其他敌人将是此类的变体。

我最初的意图是将更新敌人的方法存储在基类中,然后将具体行为存储在每个子敌人类中。

我的问题是:每次加载(或关卡)可能有数百个敌人,我是否会节省内存将我的所有行为写入每个敌人所指的一个大类中?换句话说,拥有数百个敌人,每个敌人都有一大堆行为代码,是否比将所有内容存储在单个引用类中需要更多的内存?

初步构想:

enemy.Update()

节省内存的想法:

//Static class is named EnemyBehavior
EnemyBehavior.UpdateEnemy(enemy)
4

2 回答 2

8

尽管您的类的每个实例都有其自己的私有的、消耗内存的变量副本,但它没有其方法定义的单独副本。方法消耗每个的内存,而不是每个实例。这才有意义,因为类实例不可能更改方法的定义。所以,对不起,但你的想法不会节省任何记忆。

于 2012-04-14T02:56:25.757 回答
4

这不是记忆的工作方式。堆需要存储数据和引用,而不是实际代码。因此,您不会通过决定在静态类中将“通用代码”存储在何处来保存任何内容 - 将代码与您的对象实例一起使用并不意味着它被物理复制到每个实例中。

您的建议违背了面向对象编程的全部原因,即行为封装和关注点分离。

tl; dr - 将代码与类本身一起保存。

于 2012-04-14T02:57:01.710 回答