0

我在 XNA 4.0 游戏中做了一个内容管道扩展(使用本教程)。

我改变了一些方面,所以它更好地满足了我的需要,但基本的想法仍然适用。现在我想更进一步,让我的游戏可以在运行时进行更改。我通过内容管道扩展加载的文件非常简单,它只包含十进制数字,所以我想让用户能够随意更改该文件并在游戏运行时重新加载它(无需重新编译,因为我必须这样做远的)。该文件是一个非常简化的关卡编辑器版本,这意味着它包含如下行:

1 1,5 1,78 -3,6 

在这里,第一个数字确定将被绘制到场景中的对象,其他 3 个数字是放置该对象的坐标。

那么,如何更改包含这些数字的文件,以便游戏加载它并相应地重绘场景?

谢谢

4

2 回答 2

1

考虑到您已经创建了一个自定义内容管道扩展,我想您知道如何使用 streamreader 加载数据?在哪里可以通过逐行读取文本文件来清空关卡数据并加载新数据?

我之所以提到这一点是因为据我所知,在运行时不可能通过内容管道加载数据,特别是因为 xna 重新分发不包含内容管道。

另一种选择可能是更改为使用 xml 作为关卡文件并使用我最近发现的 XElement,这是我目前的方法。

这是一个使用 StreamReader 从 .txt 文件加载简单关卡数据的注释示例。http://pastebin.com/fFXnziKv

于 2012-04-05T11:20:53.933 回答
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,唯一的问题是获取 Content 文件夹的路径,该路径相对容易检索(仅在 Windows 中!)

于 2012-04-06T17:44:24.907 回答