我正在制作一个游戏引擎并想知道如何加载资源。
我目前正在使用此代码。
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)
谢谢。