C# TextAsset返回空值
我有一个脚本,我想将文本资源转换为字符串数组,然后用它来修改PlayerPrefs。但是,在运行期间,我在下面粘贴的代码的第二行上不断收到NullReferenceException错误。我认为这是因为我以错误的方式将文本资源转换为字符串。有人能告诉我我做错了什么吗?谢谢C# TextAsset返回空值,c#,arrays,string,unity3d,C#,Arrays,String,Unity3d,我有一个脚本,我想将文本资源转换为字符串数组,然后用它来修改PlayerPrefs。但是,在运行期间,我在下面粘贴的代码的第二行上不断收到NullReferenceException错误。我认为这是因为我以错误的方式将文本资源转换为字符串。有人能告诉我我做错了什么吗?谢谢 TextAsset txt = (TextAsset)Resources.Load("SaveKeys1", typeof(TextAsset)); string txtString
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);
}
我假设这是因为我正在将文本资源转换为字符串
走错了路。有人能告诉我我做错了什么吗
守则:
TextAsset txt = (TextAsset)Resources.Load("SaveKeys1", typeof(TextAsset));
string txtString = txt.text;
这是正确的方法。这里没有什么问题,因为您提到了第二行,即string txtString=txt.text代码>导致异常,可能有两个原因
1。您的文件名拼写不正确。请直接从文件所在位置复制文件名,并将文件名直接粘贴到Resources.Load
函数中。确保不在函数中包含扩展名(.txt
,.xml
…)
2。SaveKeys1文件的扩展名不正确TextAsset
仅支持文件扩展名,如.txt
,.html
,.htm
,.xml
,.bytes
,.csv
,.yaml
和.fnt
3SaveKeys1
文件未放置在正确的文件夹中。要使Resources.Load
功能正常工作,文件必须放在名为Resources
的文件夹中。通常,将此文件放在名为Resources
的任何文件夹中都可以,但仅出于测试目的,请在Assets/Resources
目录中创建该文件夹,然后将SaveKeys1文件放在那里。这应该是可行的。您是否确定txt
不等于null?根据您所展示的内容,这是不清楚的。对于空引用错误,您通常只需要进行更深入的调试。将第一行拆分为更多单独的行,并进行调试,以准确找到返回null
的部分。根据假设和猜测,最有可能的情况是txt
在这里为空。通过调试,只有你才能知道原因。我只知道一个名为resources的文件夹中的txt文件。现在可以了。谢谢。好的,哪一个修好了?我明白了。使用时,这里的拼写很重要。快乐编码!