2011-08-15 12 views
1

好的,所以我想知道如果我在初始化方法而不是初始化方法初始化負載內容方法中的對象是否可以?這真的很重要嗎? 謝謝。是否所有初始化代碼都應限制爲Initialize方法?

順便說一句,我問這個問題的原因是因爲我有我之前intialize我的播放器對象加載紋理,並且我不認爲可能的方式做到這一點,除了這種方式。

如果任何人有一個想法,我應該怎麼做,這將會是巨大的,非常感謝。

回答

1

這是確定在LoadContent方法來創建新的對象。您可以在其他地方加載內容[Game.LoadContent被稱爲-AR]

XNA僅提供與有InitializeLoadContent方法的圖案。如果你想保持它,添加LoadContent方法您的播放器對象,並從你的遊戲LoadContent方法調用它(或使用您的播放器可繪製遊戲組件)。

編輯:

下面是一個使用DrawableGameComponent一個例子:

Player.cs

class Player : DrawableGameComponent 
{ 
    public Player(Game game) : base(game) 
    { 
    } 

    protected override void LoadContent() 
    { 
     // ... load your content via Game.Content.Load<...>(...); 
    } 
} 

Game.cs

protected override void Initialize() 
{ 
    Components.Add(new Player(this)); 
} 
+0

人們經常在加載內容中創建對象?或者這很罕見?當我說「新」時,我的意思是這樣:MyPlayer = new Player();你說什麼意思是「你可以在其他地方加載內容?」你的意思是在其他班級? – Joey

+0

這只是一種模式。如果你想保持這個模式,從DrawableGameComponent派生你的玩家類並將其派生到Game.Components。 – Fox32

+0

我已經給你的答案添加了一條註釋:你只應該在LoadContent期間和之後加載圖形內容('Texture2D'等)。在此之前,圖形設備還沒有準備好。 ([參考](http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.loadcontent.aspx))。 –

0

在我的遊戲中,我永遠不會使用初始化方法。原因是我實際上發現哪些方法被調用的時間和時間不一致。因此,在我的LoadContent()方法中,我構造了該對象,構造函數在它自己的方法中加載了它需要的紋理。所以當玩家完成構造時你就會擁有紋理。

它老老實實不要緊,你初始化什麼樣的順序或加載內容,你應該僅僅是因爲這就是好的代碼一致。 (或更容易閱讀)`

相關問題