【问题标题】:Monogame content use efficiency单机游戏内容使用效率
【发布时间】:2015-02-13 09:32:00
【问题描述】:

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

顺便说一句,我的意思是我尽量保持帧率并使用更少的内存,谢谢!

【问题讨论】:

  • 仅在 LoadContent() 方法内加载对象或纹理一次。如果您不想全部加载,您可以创建自己的 loadcontent 方法,但请确保它只执行一次。

标签: c# monogame spritebatch content-pipeline


【解决方案1】:

帧速率的最佳方法是在游戏循环开始之前加载它。但是减少内存的最佳方法是在您需要它并在完成后将其处理掉。不一定相互包容...选择你的毒药。

【讨论】:

  • 谢谢你真的帮了我!
【解决方案2】:

您有 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 秒。

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

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多