4

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

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

4

1 回答 1

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与那个计数器相关。

于 2013-10-04T00:28:25.283 回答