我是否只需要将所有图形的实例创建到从文件加载的内存中?处理此问题的最佳方法是什么?我是否只需要某种资产管理器来在加载屏幕期间创建这些图形实例,然后在以后进行引用?
需要在游戏中预装哪些常见的东西?我应该预加载多少?
值得展示某种进度条吗?如何缩短加载时间?加载屏幕应该是什么样的?
有哪些加载屏幕的好例子?任何代码示例?
具体来说,我的游戏是针对Andriod(Java / mobile)的,但请随时将您的答案设为通用。
我是否只需要将所有图形的实例创建到从文件加载的内存中?处理此问题的最佳方法是什么?我是否只需要某种资产管理器来在加载屏幕期间创建这些图形实例,然后在以后进行引用?
需要在游戏中预装哪些常见的东西?我应该预加载多少?
值得展示某种进度条吗?如何缩短加载时间?加载屏幕应该是什么样的?
有哪些加载屏幕的好例子?任何代码示例?
具体来说,我的游戏是针对Andriod(Java / mobile)的,但请随时将您的答案设为通用。
Answers:
要预加载的典型事情是您实时需要的任何东西。除了剪贴图和超大纹理等概念(想法是加载所需的零件,并在世界各地移动时对其进行迭代更新)之外,您将想要保留关卡/区域/任何区域所需的一切在内存中而不是磁盘中。IO是sloooow,并且您不希望在转弯并且即将显示纹理时加载纹理。所谓的一切,就是纹理,声音,网格,元数据……一切。
如果您可以显示进度条(即您已准确地将加载步骤映射到百分比),则一定要显示它。如果没有,请至少显示一些内容,例如短消息或加载指示符,并在每个步骤之后进行更新,以便您至少可以判断出正在发生的事情。
如果您需要某些东西,但不是马上就知道,可以将其加载到后台,然后在游戏过早的情况下暂停游戏(虽然不好,但请确保很少发生)。这将帮助您减少加载时间。我对android开发了解不多,或者与游戏一起处理设备是否需要太多,但通常在CPU上比较轻便,所以那里应该没有大问题。
您需要成为“网状样条线”
取决于您要使用一个加载屏幕,即时电平转换还是多个加载。
我想说后者在记忆上会更好。
就像是:
//First loading screen
Load menu layouts or whatever
Load GUI assets
Show something to pass the time
Switch to menu
//In between levels
Remove any graphics specific to the last level - get rid of something that isn't going to reappear like a boss.
Load level graphics that haven't already been loaded
Again, show progress or something to pass the time
并且在加载时,请确保没有黑屏。或就此而言,静态屏幕。很多时候,我在应用程序启动时看到静态图像一段时间,然后立即认为它已崩溃。
吸引玩家参与的一种好方法就是绘制精美的游戏场景背景或故事情节参考。带有/不带有百分比的加载栏,只要它不是静态的“加载”;然后也许是一些信息。
正如其他人所说,如果您可以在开始播放关卡之前加载所有数据,那么您的性能将会更好。这是在游戏过程中加载资产的帧时故障的常见原因。
加载屏幕期间的常见操作是静态背景图像,非常简单的关卡,一些有关播放的提示和技巧,快速动画等。
这是APB的加载屏幕。非常酷。:) http://www.youtube.com/watch?v=p5STix1t_1E&feature=related
这是一些在加载屏幕上显示进度条的伪代码:
LoadScreen::Init()
{
mAssetsToLoad.add("Background.png");
mAssetsToLoad.add("Player.png");
}
LoadScreen::Update()
{
mProgress += 1;
mAssetManager.load(mAssetsToLoad.top());
mAssetsToLoad.pop();
if mAssetsToLoad.empty()
mDone = true;
}
LoadScreen::Draw()
{
for( int i = 0; i != mProgress; ++i)
{
Vector2 pos(i*mProgressPartTexture.Width, 100);
DrawProgressBarPart(pos, mProgressPartTexture);
}
}
gh,被迫使用!=,因为它在我使用<
加载屏幕可用于隐藏几乎所有内容。加载资产,需要建立的任何连接(tcp等),使用游戏对象填充地图以及进行初始化。
我倾向于做的事情是拥有某种资产管理器(或者可能是每种资产类型的管理器-声音,图形等),并让它们将要使用的内容加载到内存中。然后,让您的游戏将参考从管理者中拉出来。
显示进度条,确定要预加载的内容等似乎取决于您的项目,它取决于加载时间和口味。如果进度条很准确,并且进度很长,那么进度条会很不错(很高兴知道您需要等待多长时间)。
话虽这么说,但在我的Android手机上,我倾向于使用具有自己的自定义,精美完成的加载屏幕的应用。它不需要栏,但是动画告诉用户程序正在运行。我相信android有可以使用的默认栏,效果很好。
值得注意的是,具有质量控制要求的平台(例如X360,PS3,DS等)都将要求您在加载屏幕(或实际上任何保持静态状态超过几秒钟的屏幕)中都具有某种形式的动画。 )。
这是因为,否则用户可能会认为您的游戏已经崩溃,而实际上这只是花费很长时间才能加载。即使不是必需的,我也一定会建议。
任何形式的动画都可以,但是简单的进度条可能不是最好的,因为加载过程中的任何较大步长都可能导致进度条在一段时间内完全不移动,这意味着屏幕就像静止的屏幕一样静止。根本没有吧。除了显示进度指示器外,最好显示一些不断移动的图像,例如旋转的图标。