作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在单一游戏中为 Windows 8 制作了一款游戏,但遇到了问题。我们终于拿到了 Surface RT,但我们注意到该设备的加载时间非常长。我们查看了其他几款游戏,发现这并不是一个罕见的问题。为了消除用户在加载资源期间的无聊感,我想在屏幕上绘制一个加载栏和一些随机事实。问题是加载资源会阻塞游戏的其余部分,并且不允许我绘制任何内容,因为它停留在初始化部分。
我搜索了创建一个丢失线程,但发现 Windows 应用商店不支持该功能,所以现在我的问题是如何在后台加载我的资源或其他方式来不阻止整个游戏并能够调用句柄我的 Draw() 函数在屏幕上绘制加载栏。
最佳答案
我做了这样的事情:
protected volatile bool ContentLoaded = false;
protected async override void LoadContent()
{
base.LoadContent();
Enabled = false;
await ThreadPool.RunAsync(new WorkItemHandler(LoadAllContent));
}
protected void LoadAllContent(Windows.Foundation.IAsyncAction action)
{
if (action.Status == Windows.Foundation.AsyncStatus.Error)
System.Diagnostics.Debug.WriteLine(action.ErrorCode);
// load your contents
ContentLoaded = true;
Enable = true;
}
在 Draw
方法的开头:
if (!ContentLoaded)
{
// draw your loading screen
return;
}
如果您想要一个进度条,您需要一个计数器来增加您加载的每个资源,那么在您的 Draw
中,您的进度条必须与该计数器相关。
关于windows-8 - 创建后台线程单游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161467/
我是一名优秀的程序员,十分优秀!