まず、プッシュモデルとプルモデルのどちらを採用するかを決める必要があります。プッシュモデルでは、アセットを変更したアプリケーション/環境は、アセットが変更されてリロードする必要があることを、実行中のゲームに何らかの方法で通知する必要があります。これは、非常に単純なメッセージキューで実行できます。
プルモデルでは、ゲームは定期的にすべてのゲームアセットをチェックして、変更されているかどうかを確認し、変更されている場合はリロードします。これは、パフォーマンスが低い場合でも、より単純なソリューションになります。
より大きな懸念は、アプリの実行中にゲームがアセットの再読み込みを適切に処理できるかどうかです。おそらく、アセットをロードしてから、ゲーム内の「ライブ」アセットでそれらを「スワップ」する、ある種のバックグラウンドスレッドを実装する必要があります。または、アセットがリロードされるたびにゲームが一時停止することもあります。いずれの場合も、コンテンツパイプラインが現在どのように機能しているかによっては、これがプロセスの最も複雑な部分になる可能性があります(すでにバックグラウンドローダースレッドがある場合など)。
コメントに応じて編集:
この方法を使用して、コンテンツフォルダへの完全修飾パスを取得できます:)
static public String FullContentDirectory(this ContentManager content)
{
var appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
return System.IO.Path.Combine(appPath, content.RootDirectory);
}
さて、あなたの次の問題は、アセット名からファイル拡張子をどのように知るかということだと思います。または、アセット名がファイル名と異なる場合はどうなりますか?