Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:创建全局静态方法_C#_Xna_Monogame - Fatal编程技术网

C#:创建全局静态方法

C#:创建全局静态方法,c#,xna,monogame,C#,Xna,Monogame,所以,我已经在Monogame中开发了一个游戏很长一段时间了,我正在尝试优化代码。我试图优化的内容之一是LoadContent方法,它只出现在一个类(游戏一)上,用于将资产加载到游戏中 我想:在每个类中都有一个全局的、静态的方法来自己加载内容,而不是让游戏类来为他们加载内容,这不是很好吗 例如: 我现在如何加载内容: class.LoadContent(c) // c is ContentManager, a variable used for loading assets class2.Loa

所以,我已经在Monogame中开发了一个游戏很长一段时间了,我正在尝试优化代码。我试图优化的内容之一是LoadContent方法,它只出现在一个类(游戏一)上,用于将资产加载到游戏中

我想:在每个类中都有一个全局的、静态的方法来自己加载内容,而不是让游戏类来为他们加载内容,这不是很好吗

例如:
我现在如何加载内容:

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,以便下次实例化时不再加载它。谢谢