C# 在Android中使用StreamReader读取文本文件
所以,我正在联合开发视觉小说。该应用程序在pc上运行平稳,但现在我希望它在android上运行,但我的.txt文件中的内容没有显示在屏幕上。我假设错误是StreamingAssets文件夹中的文本文件无法加载,我不知道为什么。这是我的密码:C# 在Android中使用StreamReader读取文本文件,c#,android,unity3d,streamreader,android-assets,C#,Android,Unity3d,Streamreader,Android Assets,所以,我正在联合开发视觉小说。该应用程序在pc上运行平稳,但现在我希望它在android上运行,但我的.txt文件中的内容没有显示在屏幕上。我假设错误是StreamingAssets文件夹中的文本文件无法加载,我不知道为什么。这是我的密码: void Start () { path = "jar:file://" + Application.dataPath + "!/assets/StreamingAssets/Dialogue0.txt"; lines = new Lis
void Start () {
path = "jar:file://" + Application.dataPath + "!/assets/StreamingAssets/Dialogue0.txt";
lines = new List<DialogueLine>();
Example();
}
IEnumerator Example()
{
if (path.Contains("://"))
{
var www = new WWW(path);
yield return www;
if (!string.IsNullOrEmpty(www.error))
{
Debug.LogError("Can't read");
}
LoadDialogue(www.text);
}
else
LoadDialogue(path);
}
void LoadDialogue(string filename)
{
string line;
StreamReader r = new StreamReader(filename);
using (r)
{
do
{
line = r.ReadLine();
if (line != null)
{
string[] lineData = line.Split('|');
if (lineData[0] == "Player")
{
DialogueLine lineEntry = new DialogueLine(lineData[0], "", 0, 0, "");
lineEntry.options = new string[lineData.Length - 1];
for (int i = 1; i < lineData.Length; i++)
{
lineEntry.options[i - 1] = lineData[i];
}
lines.Add(lineEntry);
}
else
{
DialogueLine lineEntry = new DialogueLine(lineData[0], lineData[1], int.Parse(lineData[2]), int.Parse(lineData[3]), lineData[4]);
lines.Add(lineEntry);
}
}
}
while (line != null);
r.Close();
}
}
void Start(){
path=“jar:file://“+Application.dataPath+”!/assets/StreamingAssets/Dialogue0.txt”;
行=新列表();
示例();
}
IEnumerator示例()
{
if(路径包含(“:/”)
{
var www=新www(路径);
收益率;
如果(!string.IsNullOrEmpty(www.error))
{
LogError(“无法读取”);
}
LoadDialogue(www.text);
}
其他的
对话(路径);
}
无效加载对话框(字符串文件名)
{
弦线;
StreamReader r=新的StreamReader(文件名);
使用(r)
{
做
{
line=r.ReadLine();
如果(行!=null)
{
string[]lineData=line.Split(“|”);
if(线条数据[0]=“播放器”)
{
DialogueLineEntry=新建DialogueLine(lineData[0],“”,0,0,“”);
lineEntry.options=新字符串[lineData.Length-1];
对于(int i=1;i
只需将文件序列化为Appliction.persistentDataPath+文件名,然后轻松读取即可。它将文件保存在android的Windows(AppData/LocalLow/InYourUnityProject)中(在公司名称文件夹下)我想你的路径应该只有
path=“jar:file://“+Application.dataPath+”!/assets/Dialogue0.txt”
或使用path=Application.streamingassetpath+”/Dialogue0.txt
insteaddos“Application.streamingassetpath”正在工作?因为根据unity3d中的文档:这是针对pc的,而对于android则是:path=“jar:file://”+Application.dataPath+“/资产/";文档说明它将始终指向每个平台的正确路径。最好始终使用Application.StreamingAssetPath获取StreamingAssets文件夹的位置,因为它将始终指向运行应用程序的平台上的正确位置。除了UWP,我想:)它仍然不起作用。我知道这听起来很愚蠢,但我的www代码做得对吗?或者缺少什么?:(不要直接调用协同例程函数。必须使用start例程
调用它。这应该是start例程(示例())
。请参阅副本中关于如何从StreamingAssets读取文件的答案中的ReadFromStreamingAssets
函数。