首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于游戏里的进度条的实现解决方案

2012-03-04 
关于游戏里的进度条的实现游戏里面每当你切换场景的时候,都会有loading的进度条来提示你场景什么时候加载

关于游戏里的进度条的实现
游戏里面每当你切换场景的时候,都会有loading   的进度条来提示你场景什么时候加载完毕,我想知道他是怎么实现的呢,急需,谢谢!关于进度条的渲染我已经自己写成了,但是不知道怎么加到我的游戏框架里去了,大家指点指点,谢谢了!

[解决办法]
比如你load一个文件,如果文件比较大的话,你可能是用一个循环来读这个文件,那么你就可以在这个循环里用当前已读文件的字节数除以文件的大小得到的百分数来设置进度条显示值。
假设你的进度条是用一个类ProgressBar表示
bool load(string filename, ProgressBar& bar)
{
ifstream ifile(filename, ios::binary);
ifile.seekg(0, ios::end);
int size = ifile.tellg(); // 文件大小
ifile.seekg(0, ios::beg);
while (!ifile.eof())
{
ifile.read(...);
// ...
double value = ifile.tellg() / double(size); // 当前已经字节除以文件大小
bar.setvalue(value); // 设置进度条值,一旦进度条值发生改变,通过某种机制通知程序重新渲染进度条
}

// ...

return true;
}
[解决办法]
还着那么好心...还要按真实的读取来设置进度条啊?

首先;数据分段LOAD,首先是图片资源,然后是音乐资源,如果图片,音乐资源过大,可以拆分读取.最后渲染第一场景的地图等.
每完成一段读取,LOADING图片前进一段.

游戏里面的LOADING进度条都是假的进度,除非你要在中断里面检测读取的真实进度.不过完全没有必要.


[解决办法]
真实的进度条看着漂亮啊,最鄙视那些假的进度条了,动不动涨到90%+然后跟死机了一样的不动弹。。。
war3的大的RPG地图读取就是最典型的例子,不过人家分开模块来划分进度条倒也可以说的过去吧还算。但是肯定有更好的方法来实现
[解决办法]
楼上的,请不要随便鄙视.涨到90+然后死机,那是因为你机器装载数据的速度慢,跟假不假没关系.

在读取一个大文件,装载大地图数据,渲染一个很大的场景,当没有完成的时候,如何判断进行到那里了?所以分数据段LOAD,每装载完一段,进度条就前进一段,是合理的做法.

所以完全真实的进度条是不现实的,当然也有办法,但是当装载已经很慢的时候,来做这些动作,让装载速度变的更慢,是不能接受的.

热点排行