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」の各インスタンスには同じスプライトがあり、「SomeObject」が開始された後、継承された loadContent メソッドによってロードされます。通常、LoadContent メソッドはゲームの開始時に 1 回だけ呼び出されます。
ただし、ゲームの実行中に新しいオブジェクトを追加できるようにしたいと考えています。「SomeObject」の各インスタンスが同じスプライトを共有できるようにして、新しいインスタンスが同じ画像を再度ロードする必要がないようにするとよいでしょう。現在、既存のオブジェクトからスプライトをコピーするだけです。たとえば
someObject2.mSprite = someObject1.mSprite
、これは、コピー元のクラスの既存のインスタンスがある場合にのみ機能します。私がやりたいのは mSprite を静的にすることですが、基本クラスで静的として宣言すると、他のすべてのオブジェクトが同じスプライトを取得し、派生クラスで宣言すると、方法がわかりませんload メソッドをすべてのクラスに書き直さずに画像をロードします。これを行う方法はありますか?