假设您有一个继承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”手机上 –