TextAsset返回null

时间:2016-12-10 20:41:03

标签: c# arrays string unity3d

我有一个脚本,我想将文本资源转换为字符串数组,然后使用它来修改PlayerPrefs。但是,我在下面粘贴的代码中的第二行运行时不断收到NullReferenceException错误。我认为这是因为我以错误的方式将文本资产转换为字符串。有人可以告诉我,我做错了吗?感谢

            TextAsset txt = (TextAsset)Resources.Load("SaveKeys1", typeof(TextAsset));

        string txtString = txt.text;



        char sep = (',');
        string[] keys = txtString.Split(sep);

        foreach(string key in keys)
        {
            PlayerPrefs.DeleteKey(key);
            Debug.Log(key);
        }

1 个答案:

答案 0 :(得分:2)

  

我认为这是因为我将文本资产转换为字符串   错误的方法。有人可以告诉我,我做错了吗?

代码:

TextAsset txt = (TextAsset)Resources.Load("SaveKeys1", typeof(TextAsset));
string txtString = txt.text;

是执行此操作的正确方法。那里没有任何错误,因为你提到string txtString = txt.text;的sceond行引起异常,有两个可能的原因。

1 。您的文件名拼写不正确。请直接从文件名中复制文件名,并将名称直接粘贴到Resources.Load函数中。确保在函数中包含扩展名(.txt.xml ...)。

2 .SaveKeys1文件没有正确的扩展名。 TextAsset仅支持.txt.html.htm.xml.bytes.json,{{1}等文件扩展名},.csv.yaml

3 .fnt文件未放在正确的文件夹中。要使SaveKeys1函数起作用,必须将文件放在名为Resources.Load的文件夹中。通常,将此文件放在名为Resources的任何文件夹中应该可以正常工作,但只是出于测试目的,在Resources目录中创建文件夹,然后将SaveKeys1文件放在那里。这应该有用。