C#:创建全局静态方法
所以,我已经在Monogame中开发了一个游戏很长一段时间了,我正在尝试优化代码。我试图优化的内容之一是LoadContent方法,它只出现在一个类(游戏一)上,用于将资产加载到游戏中 我想:在每个类中都有一个全局的、静态的方法来自己加载内容,而不是让游戏类来为他们加载内容,这不是很好吗 例如:C#:创建全局静态方法,c#,xna,monogame,C#,Xna,Monogame,所以,我已经在Monogame中开发了一个游戏很长一段时间了,我正在尝试优化代码。我试图优化的内容之一是LoadContent方法,它只出现在一个类(游戏一)上,用于将资产加载到游戏中 我想:在每个类中都有一个全局的、静态的方法来自己加载内容,而不是让游戏类来为他们加载内容,这不是很好吗 例如: 我现在如何加载内容: class.LoadContent(c) // c is ContentManager, a variable used for loading assets class2.Loa
我现在如何加载内容:
class.LoadContent(c) // c is ContentManager, a variable used for loading assets
class2.LoadContent(c) // LoadContent(c) is a static method
class3.LoadContent(c)
...
我希望:
allTheClassesThatNeedContent.LoadContent(c) // LoadContent(c) is still a static method
// Assets loaded in each and every class!
我怎么能这样做?或者,是否有可能按照我的要求执行此操作?您可以创建一个抽象基类,所有可加载类都从该基类派生 然后,在基类构造函数中,将类添加到静态集合(例如
列表
)。在静态方法中,对集合中的每个类调用LoadContent
方法
唯一的问题是,在释放类之前,需要从集合中删除这些类。最好坚持使用当前的实现。您可以创建一个抽象基类,所有可加载类都从该基类派生 然后,在基类构造函数中,将类添加到静态集合(例如
列表
)。在静态方法中,对集合中的每个类调用LoadContent
方法
唯一的问题是,在释放类之前,需要从集合中删除这些类。最好坚持使用当前的实现。我已经在我的主类中将ContentManager声明为公共静态(默认项目中的Game1) 有了这个,我可以加载任何类中的任何内容
Game1.content.Load<T>()
Game1.content.Load()
特别是在更大的项目上,我不建议加载Game1'LoadContent()中的所有数据,因为你可能会加载很多启动时不需要的内容(例如,来自未访问级别的级别数据),当游戏变得更大时,这将大大减慢游戏的启动速度
如果确实需要,可以像在构造函数中一样加载内容。我已经在我的主类中将ContentManager声明为公共静态(默认项目中的Game1) 有了这个,我可以加载任何类中的任何内容
Game1.content.Load<T>()
Game1.content.Load()
特别是在更大的项目上,我不建议加载Game1'LoadContent()中的所有数据,因为你可能会加载很多启动时不需要的内容(例如,来自未访问级别的级别数据),当游戏变得更大时,这将大大减慢游戏的启动速度
如果真的需要,比如在构造函数中加载内容。是的,dispose问题可能是个大问题,因为游戏不断更新、删除和添加新对象,所以我认为列表不是解决方案。而且,我会看看是否有更多的人试图回答这个问题并找到解决方案,因为我目前的实现让我发疯。无论如何,谢谢。是的,处置问题可能是一个大问题,因为游戏不断更新,删除和添加新的对象,所以我不认为列表是解决方案。而且,我会看看是否有更多的人试图回答这个问题并找到解决方案,因为我目前的实现让我发疯。不管怎样,谢谢。我不会安静地跟着你的qs,你能说清楚一点吗(当然,在那里:)@zackraiyani不要安静地跟着你的qs,你能再清楚一点吗(当然有:)@zackraiyanNice!现在,我将在每个需要加载资产的类中执行静态bool,当该类被实例化时,它将加载其资产并将bool设置为true,以便下次实例化时不再加载它。谢谢美好的现在,我将在每个需要加载资产的类中执行静态bool,当该类被实例化时,它将加载其资产并将bool设置为true,以便下次实例化时不再加载它。谢谢