我在XNA 4.0游戏中制作了一个内容管道扩展(使用this教程)。
我改变了一些方面,所以它更好地满足了我的需要,但基本思想仍然适用。现在我想更进一步,让我的游戏在运行时更改。我通过内容管道扩展加载的文件非常简单,它只包含十进制数字,所以我想让用户随意更改该文件并在游戏运行时重新加载它(不需要重新编译,因为我必须这样做远)。此文件是级别编辑器的一个非常简化的版本,这意味着它包含如下行:
1 1,5 1,78 -3,6
此处,第一个数字决定了将被绘制到场景的对象,其他3个数字是将放置该对象的坐标。
那么,我如何更改包含这些数字的文件,以便游戏加载它并相应地重绘场景?
由于
答案 0 :(得分:1)
考虑到您已经创建了自定义内容管道扩展,我假设您知道如何使用streamreader加载数据?您可以通过逐行读取文本文件来清空您的关卡数据并加载新数据吗?
我提到这个的原因是因为据我所知,在运行时期间无法通过内容管道加载数据,特别是因为xna重新分发不包含内容管道。
另一种选择可能是更改为使用xml作为关卡文件并使用我最近发现的XElement,这是我当前的方法。
以下是使用StreamReader从.txt文件加载简单级别数据的注释示例。 http://pastebin.com/fFXnziKv
答案 1 :(得分:0)
在XNA 4中,如果您使用的是StorageContainer,则可以执行以下操作:
(...)
StorageContainer storageContainer = //get your container
Stream stream = storageContainer.OpenFile("Level.txt", FileMode.OpenOrCreate);
StreamReader sr = new StreamReader(stream);
while (!sr.EndOfStream)
{
String line = sr.ReadLine();
//use line to do something meaningful
}
stream.Close();
storageContainer.Dispose();
(...)
从个人经验来看,如果你选择原始的TextReader,唯一的问题是获取你的内容文件夹的路径,这可以相对容易地检索(仅限Windows!)