2013-08-29 49 views
0

我想爲寵物護理做一個遊戲的Windows Phone 7,但我有問題惠普這告訴我,我有一個空方法,但我不知道爲什麼我有枚舉來自遊戲中的每個狀態。此方法不接受null爲參數

這裏是消息的圖片:http://crystalnix.deviantart.com/art/XNa-Problem-396626207?ga_submit_new=10%253A1377747418

這是主要的文件。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.GamerServices; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework.Input.Touch; 
using Microsoft.Xna.Framework.Media; 
using Mochi_Mochi_Pets_Life.Script.Screen; 

namespace Mochi_Mochi_Pets_Life 
{ 

public class MainFile : Microsoft.Xna.Framework.Game 
{ 
    GraphicsDeviceManager graphics; 
    SpriteBatch spriteBatch; 
    ScreenStates screentState; 

    Rectangle TouchS_Y_X; 

    Logo logo; 
    Menu0 menu; 
    Choose_Pets choose_pets; 
    ScreenStates.CurrentGameState GameState; 

    public MainFile() 
    { 
     graphics = new GraphicsDeviceManager(this); 
     Content.RootDirectory = "Content"; 
     Content.RootDirectory = "Script\\Screen"; 

     choose_pets = new Choose_Pets(); 

     this.screentState = new ScreenStates(); 
     this.logo = new Logo(GraphicsDevice); 
     this.menu = new Menu0(); 
     // Frame rate is 30 fps by default for Windows Phone. 
     TargetElapsedTime = TimeSpan.FromTicks(333333); 

     // Extend battery life under lock. 
     InactiveSleepTime = TimeSpan.FromSeconds(1); 

     GameState = ScreenStates.CurrentGameState.Logo; 


    } 


    protected override void Initialize() 
    { 
     choose_pets.Initialize_choosepets(); 
     // TODO: Add your initialization logic here 
     base.Initialize(); 
    } 


    protected override void LoadContent() 
    { 
     TouchS_Y_X = new Rectangle(0, 0, 1, 1); 
     // Create a new SpriteBatch, which can be used to draw textures. 
     spriteBatch = new SpriteBatch(GraphicsDevice); 

     if (GameState == ScreenStates.CurrentGameState.Logo) 
      this.logo.Load(this.Content, this.GraphicsDevice); 

     if (GameState == ScreenStates.CurrentGameState.Menu) 
      this.menu.Load_Menu(GraphicsDevice, Content); 

     if (logo.FadeOut_logo == true) 
      GameState = ScreenStates.CurrentGameState.Menu; 

     if (GameState == ScreenStates.CurrentGameState.CharactersChooser) 
     this.choose_pets.Load_ChoosePet(this.Content, this.GraphicsDevice); 
     // TODO: use this.Content to load your game content here 
    } 


    protected override void UnloadContent() 
    { 
     // TODO: Unload any non ContentManager content here 
     //this.logo.Unload_logo(Content); 
    } 


    protected override void Update(GameTime gameTime) 
    { 

     // Allows the game to exit 
     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
      this.Exit(); 

        if (GameState == ScreenStates.CurrentGameState.Logo) 
       logo.Update_logo(gameTime); 


        if (GameState == ScreenStates.CurrentGameState.CharactersChooser) 
        choose_pets.Update_petchoose(gameTime); 

     // TODO: Add your update logic here 

     base.Update(gameTime); 
    } 


    protected override void Draw(GameTime gameTime) 
    { 
     GraphicsDevice.Clear(Color.Black); 

     spriteBatch.Begin(); 

        if (GameState == ScreenStates.CurrentGameState.Logo) 
         logo.Draw(spriteBatch); 

        if (logo.FadeOut_logo == true) 
         menu.Draw_Menu(spriteBatch); 

        if (GameState == ScreenStates.CurrentGameState.CharactersChooser) 
         choose_pets.Draw_petChoose(spriteBatch); 

     spriteBatch.End(); 
     base.Draw(gameTime); 
    } 
} 
} 

而這一次是給我的問題

菜單
using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using Microsoft.Xna.Framework.Graphics; 
    using Microsoft.Xna.Framework; 
    using Microsoft.Xna.Framework.Content; 

    namespace Mochi_Mochi_Pets_Life 
    { 
class Menu0 
{ 
    Texture2D Text2D_Background; 
    Rectangle Rec_Background; 

    Texture2D ButtonText2DPlay; 
    Rectangle ButtonRecPlay; 


    public void Load_Menu(GraphicsDevice Graphics_Menu, ContentManager Content_Menu) 
    { 
     Content_Menu.RootDirectory = "Content"; 

     Text2D_Background = Content_Menu.Load<Texture2D>("UI\\MenuBack"); 
     Rec_Background = new Rectangle(0, 0, Graphics_Menu.Viewport.Width,     Graphics_Menu.Viewport.Height); 

     ButtonText2DPlay = Content_Menu.Load<Texture2D>("UI\\Buttons\\New Games"); 
     ButtonRecPlay = new Rectangle(Graphics_Menu.Viewport.Width, 400, 150, 40); 
    } 


    public void Draw_Menu(SpriteBatch Spritebatch_Menu) 
    { 
     Spritebatch_Menu.Draw(Text2D_Background, Rec_Background, Color.White); 
     Spritebatch_Menu.Draw(ButtonText2DPlay, ButtonRecPlay, Color.White); 
    } 
} 
    } 

確定這是什麼一樣的是,當我的標誌淡出是==真遊戲狀態跳轉到主馬努但它永遠不會經常發生的錯誤,我會感謝您的幫助..

+0

spritebatch null在那一點上?它看起來像是 – Jonesopolis

+0

我認爲它爲空它自我,但爲什麼如果我有我的Spritebatch和加載圖形設備和Contentmanager我不知道xD – user2727653

+0

我認爲調試它可以找出它 – Jonesopolis

回答

1

Loading_Menu不會被調用,所以質地Text2D_Background總是空

你應該認識到LoadContent爲c只能在遊戲初始化中使用,所以比較gamestate是沒有用的,因爲只會加載Logo內容。

至於解決方案,您可以在initalization加載的所有內容,或者如果需要的內容並沒有

0

之前加載遊戲狀態的變化,你可以加載它,我覺得你的Text2D_Background是空的,那是因爲你從來沒有打電話Load_Menu。 您在LoadContent中檢查gameState,並返回false

if (GameState == ScreenStates.CurrentGameState.Menu) 

LoadContent只調用一次,我不明白爲什麼你檢查gameState值。

相關問題