【问题标题】:How to put text file content to dictionary c# unityc# unity 如何将文本文件内容放入字典
【发布时间】:2017-07-21 00:36:31
【问题描述】:

我有一些带有短语的文本文件(答案)。例如,在一个文本文件中,我有 150 个短语。我正在做一个钓鱼游戏。钓到鱼后,会出现一个回复(来自文本文件)并出现在屏幕中间。我想如果我把我的文本文件放在资产文件夹中,那么一切都会好起来的。但是没有! :(

这是我返回行的代码(答案):

public string filename333 = "try.txt";

public string getRandomMessagefromRechin()
{

    var sr = new StreamReader(Application.dataPath + "/" + fileName1);
    var fileContents = sr.ReadToEnd();
    sr.Close();
    var mydata = fileContents.Split("\n"[0]);
    var myrandom = Random.Range(1, mydata.Length);
    return mydata[myrandom];

}

在PC上,当我点击播放按钮时,它工作正常,这是一张图片:

对不起,这是我的文本文件中的随机行。问题是在我在平板电脑或安卓手机上构建项目之后。我的文本文件中的答案没有显示在我的屏幕上。 我想尝试使用字典或字符串列表的另一种方法,但是如何从文件中的文本中将 150 多行放在列表中?

我还有一个问题:

1.为什么我的方法不起作用?(我想我的文本文件没有被构建,或者没有放在项目的正确文件夹中)

2.我可以尝试加载我的行(答案)的另一种方法吗?

3.由于这个问题,我还有一个场景,当你钓到一条金鱼后,会出现一个过渡(屏幕黑屏,然后屏幕恢复正常),当你可以玩时会出现一个幸运之轮,就像轮盘赌一样.这个场景没有加载到我的安卓设备上。为什么?

【问题讨论】:

  • 听起来文本文件不包含在构建中。您可以使用StreamingAssets folder 包含任意文件,但对于这样的事情,使用TextAsset 可能更容易。

标签: c# android dictionary unity3d scripting


【解决方案1】:

它需要位于 Resources 文件夹中。 Unity 会将其视为“TextAsset”。 构建后它将是只读的。

您将需要使用这样的函数将文件内容拆分为换行符并返回字符串列表。

private List<string> TextAssetToList(TextAsset ta) {
    return new List<string>(ta.text.Split(System.Environment.NewLine));
}

您还需要像其他资源一样加载它

TextAsset myTxt = Resources.Load("try") as TextAsset;
List<string> strLines = TextAssetToList(myTxt);

【讨论】:

  • 如果您想采用更结构化的路线(对于基于文本的数据,您应该这样做),那么您将需要一种可以加载和输出此类数据类型的方法。因此,您可能希望通过某种序列化来研究 XML。例如,我认为数据合同处理字典。
猜你喜欢
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多