2012-08-01 74 views
0

我試圖有一個加載屏幕彈出一旦你運行可執行文件啓動遊戲,而遊戲加載時我想在桌面上顯示一個圖像很像Gamemaker如何讓您擁有加載圖片。XNA加載/啓動畫面在遊戲開始

我身邊有一個簡單的介紹一下,大多數人想要顯示的圖像,而他們加載內容這不是我想要的東西,或者也許是... = P

我的猜測是對在開始時設置遊戲窗口無邊界,加載啓動畫面,繪製它,然後開始所有主要加載(特別是通過SlimDX加載DirectInput需要一段時間)。但是,這種支持是否具有透明/不規則形狀的圖像? E.G如果我想在遊戲加載時顯示無邊界圓圈,那可能嗎?

謝謝。

+0

你真的需要它在XNA?在開始你的XNA遊戲之前,你可以使用其他的東西來製作這個窗口。 – roim 2012-08-01 19:09:48

回答

0

如果我正確理解你,你基本上想要打開一個不是全屏的窗口,它也缺少常規邊框和伴隨窗口的按鈕。

我無法測試這個,但這應該是一個好的開始。

Here!

我將通過創建一個光禿禿的骨頭Game1類,可以跟蹤圖像和跟蹤時間的計時器開始。 稍後,您可以添加實際跟蹤主程序中資產加載的邏輯。 要開始我只是測試它的固定時間,如3秒。

+0

對不起,遲到的迴應 - 也許我想要的是不可能的,因爲這會導致2個窗口在任務欄上,我認爲 – 2012-08-04 16:41:17

+0

我不明白爲什麼你不能這樣做,因爲問這個問題的人做了什麼我的鏈接,並在初始化時窗口顯示爲一個無邊界的矩形與您的標誌或什麼不是,當一個定時器/初始加載完成時,只需返回窗口參數正常無論是全屏幕,固定屏幕分辨率等。 – Dialock 2012-08-05 17:04:19

+0

只是爲了增加這個想法。它真的歸結爲對窗口的操縱,而不是XNA本身(它只是加載和顯示你的圖像)。您可能會更好地服務於搜索或詢問有關操作win32系統的問題。 – Dialock 2012-08-05 17:09:26

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 
    } 

,然後把加載的紋理,在內容項目