2010-09-18 124 views
2

我一看这前一个问题但是这似乎并没有对XNA 4工作了Windows Phone 7的项目:XNA Framework Importers如何在Windows Phone 7的XNA 4中读取txt文件?

我一直在尝试使用:

string line; 
using (StreamReader sr = new StreamReader("credits.txt")) 
{ 
    while ((line = sr.ReadLine()) != null) 
    { 
     //reads line by line until eof   
     //do whatever you want with the text 
    } 
} 

`

但这扔System.MethodAccessException“尝试访问该方法失败:System.IO.StreamReader..ctor(System.String)”

我需要看看使用IsolatedStorage这个呢?

编辑:请注意我正在尝试加载预先准备的文件,而不是保存正在运行的应用程序的设置。例如一个文本文件,其中包含我只能在运行时阅读的信用,但需要在设计时间内进行编辑。

回答

3

发现它;我能做到这一点不IsolatedStorage,只需要使用结构为这样的XML文件:

<?xml version="1.0" encoding="utf-8" ?> 
<XnaContent> 
    <Asset Type="System.String"> 
    <credit> 
     Firece Game Hunting 

     Developer : Sebastian Gray 

     Deer (CC) : Martin Pettitt 
     http://www.flickr.com/photos/mdpettitt 

    </credit> 
    </Asset> 
</XnaContent> 

,然后加载这样的XML文件:

public string LoadFromFile() 
{ 
    using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create("XMLFile1.xml")) 
    { 
     reader.MoveToContent(); 
     reader.ReadToFollowing("credit"); 
     credits = reader.ReadInnerXml(); 
    } 
    return credits; 
} 

XML文件可以直接添加到正常项目(不是内容项目),并将构建操作设置为“内容”,并将“复制到输出目录”设置为“始终复制”。

+0

将构建操作设置为“内容”并复制到“始终复制”是多余的。他们做了两件完全不同的事情。 (我建议使用“内容”设置)。 – 2010-09-18 23:40:00

+0

我没想到的是,当从XML文件加载时,我也不需要在字符串中添加新行的\ n。辉煌。 – 2010-09-18 23:41:33

+1

安德鲁,我测试没有复制总是设置例如“不要复制”并收到此错误消息“在应用程序xap软件包中找不到文件'XMLFile1.xml'”。 - 我认为这是需要的.. – 2010-09-18 23:43:14

0

我需要看看使用IsolatedStorage来代替吗?

是的,每个应用程序(操作系统应用程序除外)都需要使用IsolatedStorage将数据存储在物理内存中,或者您可以使用可能的服务来刻录数据。

IsolatedStorage example

+0

谢谢卢卡斯。根据上一个问题,我正在尝试加载一个文件,以便与应用程序一起打包,比如游戏的点数。我不确定我是否能够在设计时将文件直接打包到独立存储中。 – 2010-09-18 23:08:40

0

为什么不写一个内容管道扩展并让内容管理员担心呢?这其实很简单。 This MSDN article explains how

Here's a blog post这给出了一个很好的高层次概述。

+0

谢谢Andrew,非常感谢这个建议。有点奇怪,没有像这样的默认简单的字符串加载器。 – 2010-09-19 03:24:05