gpt4 book ai didi

c# - XNA 到 Mono Android 转换 : What is a simple (or the simplest) way of handling the activity life cycle?

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:26 26 4
gpt4 key购买 nike

我是一名 C# 开发人员,致力于向 Mono Android 的转换。这些转换工作完美,除了当电话超时或停电并且用户再次触摸屏幕时......游戏失败。

处理这个问题的最简单方法是什么?我听说它被称为生命周期,并且发现很多关于这个周期的简短描述,但没有解释如何用真实的例子来实现它,尤其是如何用 XNA 转换来实现它。

我的第一个解决方案是在 XNA 游戏中有一个“暂停”方法,并为 Android 的“暂停”运行该方法。然而,可能有更简单的方法来处理这个问题,因为我听说有简单的 Mono Android 设置可供选择,可以自动处理超时和电话调用。

我想问的是..如何让我的 XnA 转​​换在电话调用、屏幕超时等情况下继续运行?

最佳答案

请问您是否使用MonoGame或者只是 AndroidGameView Mono for Android 自带的?

如果您使用的是 AndroidGameView,我建议您按照 textured cube sample 的约定,在 OnLoad() 中手动重新加载纹理。 .

使用 MonoGame 时,如果您通过 ContentManager.Load<Texture2D>() 加载纹理,重新加载已为您处理。使用 Texture2D.FromStream 加载的纹理必须在 GraphicsDevice.DeviceReset 中手动重新加载事件。

正如 Andrew Russell 指出的那样,ExEn优点是不需要在每次恢复时重新加载纹理。但是,仍然有必要(或至少是良好做法)支持在 Android 上重新加载图形资源。在许多设备上,如果没有它,您的游戏将无法从切换和返回中正常恢复。 ExEn 当前不支持重新加载纹理。

Xamarin 目前正在研究 fixing a bug在 AndroidGameView 中,这将允许它在设备支持的地方正确恢复。一旦发布,这应该会流向 MonoGame。

除了重新加载纹理和其他图形资源之外,生命周期的处理应该相当简单。 MonoGame 尚未实现完整的 Windows Phone 生命周期(即逻辑删除和再水化),但根据我的经验,这不是必需的。您可以使用 Game.ActivatedGame.Deactivated恢复游戏时显示暂停屏幕等事件。

关于c# - XNA 到 Mono Android 转换 : What is a simple (or the simplest) way of handling the activity life cycle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com