Monogame内容使用效率

时间:2015-02-13 09:32:01

标签: c# monogame spritebatch content-pipeline

我一直在使用Monogame一段时间,我只是想知道加载我的内容的最佳方式是什么?假设我有一个间隔系统不断在屏幕上创建对象,所以我应该在游戏类中加载对象的sprite并将sprite变量放在构造函数中,还是应该将内容变量放在对象构造函数中并从中加载sprite在对象内?

顺便说一下,我的意思是我试着保持帧率并使用更少的内存,这是提前的!

2 个答案:

答案 0 :(得分:0)

帧速率的最佳方式是在游戏循环开始之前加载它。但是,当你需要它并在完成后处理它时,减少内存的最佳方法是正确的。不一定是相互包容的...挑选你的毒药。

答案 1 :(得分:0)

您有3种不同的解决方案,每种解决方案都适合不同类型的游戏。

Load everything in LoadContent

这将导致更长的初始启动时间,但在加载完所有内容后,您将不再需要等待任何事情。但请记住,这仅适用于俄罗斯方块,Arcanoid或国际象棋等小型游戏。通常没有很多内容的游戏。请记住,加载的内容越多,消耗的内存就越多。

Load everything needed for the current scene

这是大多数游戏所做的,因为你不会为你从未使用的场景加载数据,并且你不会为你还没有访问的场景加载数据。

Load everything needed for the current scene (Extended)

与之前的答案一样,但有一点点扭曲。如果可能,在显示其他内容时加载内容。例如,一旦玩家完成完成场景的最后一步,就开始加载下一个场景。

Arcanoid示例:一旦球击中最后一个区块(或者如果你是勇敢的,即使你能够计算出球将会击中最后一个区块),也会开始为下一个场景加载内容。当球飞向最后一个区时,让这个加载,同时显示当前场景的得分(时间,死亡,奖金等)

如果播放器在场景加载之前实际关闭对话框,则在数据加载完成时显示另一个加载场景。这样,可能只有1-2秒的加载时间而不是10秒。

请记住在后台线程中执行所有这些加载。