我试图让加载屏幕在您运行启动游戏的可执行文件后立即弹出,而游戏加载时我想在桌面上显示图像,就像 Gamemaker 允许您拥有加载图像一样。
我环顾四周,大多数人都希望在加载不是我想要的内容时显示图像,或者可能是... =P
我的猜测是在开始时将游戏窗口设置为无边界,加载启动画面,绘制它,然后开始所有主要加载(特别是通过 SlimDX 加载 DirectInput 需要一段时间)。但是,这是否支持具有透明/不规则形状的图像?EG如果我想在游戏加载时显示一个无边框的圆圈,这可能吗?
谢谢。
我试图让加载屏幕在您运行启动游戏的可执行文件后立即弹出,而游戏加载时我想在桌面上显示图像,就像 Gamemaker 允许您拥有加载图像一样。
我环顾四周,大多数人都希望在加载不是我想要的内容时显示图像,或者可能是... =P
我的猜测是在开始时将游戏窗口设置为无边界,加载启动画面,绘制它,然后开始所有主要加载(特别是通过 SlimDX 加载 DirectInput 需要一段时间)。但是,这是否支持具有透明/不规则形状的图像?EG如果我想在游戏加载时显示一个无边框的圆圈,这可能吗?
谢谢。
这很简单。只需实施System.Threading
,您就完成了。
这是它的工作原理,首先添加:
using System.Threading;
到班级的顶部,然后添加以下内容:
//the enum for state types
enum GameState
{
Loading,
StartMenu
}
//Init our gameState enum as variable
GameState gameState;
protected override void LoadContent()
{
gameState = GameState.Loading;
spriteBatch = new SpriteBatch(GraphicsDevice);
device = GraphicsDevice;
Window.Title = "Your Window";
//Other stuff that you had here before, now go in LoadGame()
loadingscreen = Content.Load<Texture2D>("loading");
Thread bgLoad = new Thread(new ThreadStart(LoadGame));
bgLoad.IsBackground = true;
bgLoad.Start();
}
public void LoadGame()
{
//Loading stuff here
gameState = GameState.StartMenu; //or GameState.Playing
}
然后在您的内容项目中放置一个加载纹理
如果我理解正确,您基本上希望打开一个非全屏窗口,该窗口也缺少窗口附带的常规边框和按钮。
我无法对此进行测试,但这应该是一个好的开始。
我将从创建一个简单的 Game1 类开始,它可以跟踪图像并跟踪计时器的时间。稍后您可以添加实际跟踪主程序中资产加载的逻辑。首先,我只测试它一段固定的时间,比如 3 秒。