假設您有一個繼承DrawableGameComponent的ScreenManager和一個繼承GameScreen的GamePlayScreen。 GamePlayScreen通過ScreenManagers ContentManager繪製,其功能與Game1.cs一樣。而其LoadContent樣子:將對象加載到另一個類的列表中XNA C#
public override void LoadContent()
if (content == null)
content = new ContentManager(ScreenManager.Game.Services, "Content")
foreach (Objects object in objects)
object.LoadContent();
和對象類調用相同LoadContent方法,但當然說object = content.Load<Texture2D>(" - ");
...我得到的錯誤:
"content = new ContentManager(ScreenManager.Game.Services, "Content")
- 未設置爲對象的實例引用一個對象「在我的對象類LoadContent方法中
有沒有辦法從對象類調用GamePlayScreen的內容或ContentManager? ++++++++++++++++++ +++++
好吧,我已經意識到問題到底是什麼。我正在使用GameStateManagement Sample的邏輯,「由Xbox Indie Games的頭部技術創建」,它本身就是精彩的代碼......如果你只是在製作主菜單......大聲笑...
但是,ScreenManager是DrawableGameComponent,它的GameScreen列表使它成爲並說屏幕是遊戲中唯一有效的東西。或者可能只有屏幕是,並且當它們轉換到屏幕管理器被調用時,喚醒,增加新的屏幕並再次進入睡眠。
因此不允許您調用任何類,對象名單的,或者包含在另一個類東西......
現在,人們可能會想到,只需要創建一個新的ScreenManager2 : DrawableGameComponent
,或者甚至一個ObjectManager : DrawableGameComponent
....啊ahhh,已經擊敗你的朋友.....
創建一個新的ObjectManager允許你的對象被繪製在你原來的ScreenManager處理的所有東西上......真正的......包括你的PauseScreen和PauseMenu ..垃圾!
並且在您提及ScreenManager2之前,它處理PauseScreen和PauseMenu,並嘗試過。我成功地操作了所有的代碼,直到ScreenManager選擇Play來告訴LoadingScreen功能,然後調用GamePlayScreen ...
這導致Asik正確,我的內容是空的,因爲我無法弄清楚方式爲我的對象類/類被調用和初始化與此代碼的工作方式。
導致我問正確的問題...
你怎麼調用類初始化,只是足夠長的時間讓LoadContent在GamePlayScreen聚集說類/對象信息,將其放在其對象列表?
雷曼的條款:「LoadContent函數上的GamePlayScreen,喚醒Object1.cs,在你的ObjectList中添加對象信息,告訴Object1.cs進入睡眠狀態,GamePlayScreen繼續你的糟糕自我......」 「
感謝您的編輯說,我在「Not-so-Smart」手機上 –