我正在製作一個遊戲引擎並想知道如何加載資源。資源加載在SharpDevelop中工作,但不是在手動編譯時
我正在使用此代碼。
public static Stream GetResourceStream(string name) {
string asmname = Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location).Replace('\\', '.').Replace('/', '.');
return Assembly.GetEntryAssembly().GetManifestResourceStream(asmname + "." + name.Replace('\\', '.').Replace('/', '.'));
}
,並用它作爲
Image img = Image.FromStream(GetResourceStream("Resources/image.png"));
它是工作在目前的形式在SharpDevelop的,但如果我編譯通過命令行的源代碼類似
csc.exe /t:winexe /res:Resources/image.png Game.cs
它返回空流。已經上市的資源與
foreach (var name in typeof(this).Assembly.GetManifestResourceNames())
{
MessageBox.Show(name);
}
它掛牌,形象與簡單的名稱,沒有包或文件夾名稱。
在入口程序集中加載資源的最佳方式是什麼? (我將有一個單獨的GameEngine.dll)
謝謝。
感謝馬特。我將要求用戶將邏輯名稱設置爲sharpdevelop之類的邏輯名稱,如果他們正在使用其他名稱。你有什麼建議? –
不確定。命名空間和資源名稱應該足以使其獨特,如果您要合併來自其他程序集的資源。 –