我正在使用 C# (XNA) 开发游戏,但我不知道该怎么做。这是我正在做的一个非常简化的版本:
class GameObject
{
Protected Sprite mSprite;
Protected string filename;
public LoadContent(ContentManager theContentManager)//XNA forces you to load content through a Content Manager which belongs to the main game class
{
mSprite.Load(theContentManager, filename);//the Sprite class contains a texture and methods to deal with loading images, animating, etc
}
}
class SomeObject : GameObject
{
public SomeObject()
{
filename = "someobject.png";
}
}
“SomeObject”的每个实例都有相同的 Sprite,在“SomeObject”启动后由继承的 loadContent 方法加载。通常 LoadContent 方法只在游戏开始时调用一次。
但是,我希望能够在游戏当前运行后添加新对象。如果我可以让“SomeObject”的每个实例共享相同的精灵,这样新实例就不必再次加载相同的图像,那就太好了。目前我只是从现有对象复制精灵,例如,
someObject2.mSprite = someObject1.mSprite
但这仅在该类的现有实例可以复制时才有效。我想做的是让 mSprite 是静态的,但是如果我在基类中将它声明为静态,所有其他对象将获得相同的精灵,如果我在派生类中声明它,我无法弄清楚如何加载图像而不将加载方法重新写入每个类。有没有办法做到这一点?