windows-8 - 创建后台线程单游戏

标签 windows-8 xna windows-store-apps monogame

我在单一游戏中为 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/

相关文章:

windows-8 - 我的应用程序的试用用户可以使用我的应用程序内购买吗?

windows-8 - 错误 : DEP0700 : Registration of the app failed. 错误 0x80070002:由于内部错误或内存不足,Windows 无法注册程序包

windows-8 - Windows RT/Windows Store App对App.config的回答是什么?

windows-8 - 64 位 Debian 的 VirtualBox 昨天可以运行,但现在无法检测到 64 位 CPU

c# - XNA 4.0 应用程序在遇到方法时突然关闭而没有抛出任何异常

c# - XNA 性能下降 GameState 管理

windows-8 - Windows 8 Store MonoGame - 如何从相机中提取位图

c# - 在 Windows 8 中隐藏文本框插入符号

dependency-injection - 使用 Ninject 2.0 避免 XNA 中的循环依赖

c# - 使用 MvvmCross 添加 Windows 8.1 Store 基本页面(不再继承自不存在的 LayoutAware 而是基类 Page 类)