はい、ライブラリ プロジェクトにコンテンツを読み込むことができます。クラスContentManager
外のインスタンスを作成し、それを使用してコンテンツをロードできます。Game
の新しいインスタンスを作成する秘訣ContentManager
は 2 つのコンストラクターであり、どちらも のインスタンスをIServiceProvidor
最初の引数として受け入れます。で作成しているどのクラスでも、ContentManager
このインターフェイスを実装できます。このインターフェイスから実装する必要があるメソッドは 1 つだけです。
public object GetService(Type serviceType)
ContentManager
のインスタンスを取得するために、によって呼び出されますIGraphicsDeviceService
。このインターフェイスを実装できるクラスが必要になります。これは、主にデバイスの作成と破棄に関連するイベントです。実装する必要がある重要なプロパティが 1 つあります。それは次のとおりです。
public GraphicsDevice GraphicsDevice
インターネットの他の場所で見つけることができるので、この回答の定型コードをたくさん残しておきます。以下のコードは、XNA Graphics システムを初期化し、GraphicsDevice
このクラスのインスタンスを作成する前に を作成したことを前提としています。
public class ImageGenerator : IServiceProvider, IGraphicsDeviceService
{
public GraphicsDevice GraphicsDevice { get; private set; }
public ContentManager ContentManager { get; private set; }
public ImageGenerator( GraphicsDevice device )
{
this.GraphicsDevice = device;
this.ContentManager = new ContentManager( this );
}
public object GetService(Type serviceType)
{
if (serviceType == typeof(IGraphicsDeviceService))
{
return this;
}
return null;
}
public event EventHandler<EventArgs> DeviceCreated;
public event EventHandler<EventArgs> DeviceDisposing;
public event EventHandler<EventArgs> DeviceReset;
public event EventHandler<EventArgs> DeviceResetting;
}
ただし、このルートに入る前に、サブクラスGame
化を調査し、XNA Framework が面倒な作業を処理できるようにすることをお勧めします。シーンのレンダリングと画像の作成について心配する必要はありません。
Axiom ( http://www.axiom3d.net ) は、3D シーンをビットマップ イメージに生成できる C# エンジンです。