创建Backgroundthread Monogame

时间:2013-10-03 14:09:17

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

我以单一游戏为Windows 8制作了一款游戏但遇到了问题。我们终于掌握了Surface RT,但我们注意到这个设备上的加载时间非常长。我们查看了其他几个游戏并注意到这不是一个不常见的问题。为了在加载资源期间对抗用户的无聊,我想在屏幕上绘制一个加载栏和一些随机事实。问题是加载资源会阻止游戏的其余部分,并且不允许我绘制任何东西,因为它一直停留在初始化部分。

我搜索了创建丢失线程,但发现Windows Store不支持,所以现在我的问题是如何在后台加载我的资源或以其他方式阻止整个游戏并能够调用句柄我的Draw()函数在我的屏幕上绘制一个加载栏。

1 个答案:

答案 0 :(得分:4)

我做了类似的事情:

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你的酒吧必须与那个计数器相关。