【问题标题】:XNA loading/splash screen on game start游戏开始时 XNA 加载/启动画面
【发布时间】:2012-08-01 17:22:32
【问题描述】:

我试图让加载屏幕在您运行启动游戏的可执行文件后立即弹出,而游戏加载时我想在桌面上显示图像,就像 Gamemaker 允许您加载图片。

我环顾四周,大多数人都希望在加载不是我想要的内容时显示图像,或者可能是... =P

我的猜测是在开始时将游戏窗口设置为无边框,加载启动画面,绘制它,然后开始所有主要加载(特别是通过 SlimDX 加载 DirectInput 需要一段时间)。但是,这是否支持具有透明/不规则形状的图像?例如,如果我想在游戏加载时显示一个无边框的圆圈,这可能吗?

谢谢。

【问题讨论】:

  • 在 XNA 中真的需要它吗?在开始 XNA 游戏之前,您可以使用其他东西来制作此窗口。

标签: xna


【解决方案1】:

这很简单。只需执行 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
    }

然后在您的内容项目中放置一个加载纹理

【讨论】:

    【解决方案2】:

    如果我对您的理解正确,您本质上是希望打开一个非全屏窗口,该窗口也缺少窗口附带的常规边框和按钮。

    我无法对此进行测试,但这应该是一个好的开始。

    Here!

    我将首先创建一个简单的 Game1 类,该类可以跟踪图像并跟踪计时器的时间。 稍后您可以添加实际跟踪主程序中资产加载的逻辑。 首先,我将测试它一段固定的时间,比如 3 秒。

    【讨论】:

    • 抱歉,回复晚了 - 也许我想要的是不可能的,因为我认为这会导致 2 个窗口出现在任务栏上
    • 我不明白为什么你不能像提问者在我的链接中所做的那样做,并且在初始化时窗口显示为带有您的徽标的无边框矩形或其他并且当计时器/初始加载完成时,只需将窗口参数恢复正常,无论是全屏、固定屏幕分辨率等。
    • 只是为了增加这个想法。它实际上归结为窗口的操作,而不是 XNA 本身(它只是加载和显示您的图像)。搜索或询问与操纵 win32 系统相关的问题可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2015-02-18
    • 1970-01-01
    • 2013-06-16
    相关资源
    最近更新 更多