Unity从资源加载文本

Gho*_*ool 5 c# unity-game-engine

我可以UILabel用以下内容更改(命名为about)的文本:

using UnityEngine;
using System.Collections;

public class about : MonoBehaviour
{
   void Start ()
   {
      UILabel lbl = GetComponent<UILabel>();
      lbl.text = "Hello World!";
   }
}
Run Code Online (Sandbox Code Playgroud)

但是当我想从resources(Assets/Resources/about.txt)中的文本文件加载标签文本时出现问题

lbl.text = Resources.Load(Application.dataPath + "/Resources/about") as String
Run Code Online (Sandbox Code Playgroud)

所以我不确定我哪里出错了,是的,我看过这里.

小智 9

只需使用:

TextAsset mytxtData=(TextAsset)Resources.Load("MyText");
string txt=mytxtData.text;
Run Code Online (Sandbox Code Playgroud)

你可以使用txt字符串来满足你的要求,只要确保它MyText.txtAssets > Resources

  • 如果有人犯了与我相同的错误:文件名字符串不应包含扩展名。因此,对于 `file.txt`,应该使用 `Resources.Load("file")`。 (2认同)

pid*_*pid 7

你试过其中一个:

TextAsset mydata = Resources.Load("MyTexts/text", typeof(TextAsset));
TextAsset mydata = Resources.Load("MyTexts/text") as TextAsset;
Run Code Online (Sandbox Code Playgroud)

这里"MyTexts/text"是资产名称,它将实际引用该文件text.txt.

资产应该以这种方式放在Assets文件夹中:

Assets/MyTexts/text
Run Code Online (Sandbox Code Playgroud)

在文件系统上,您将拥有:

.../Assets/MyTexts/text.txt
Run Code Online (Sandbox Code Playgroud)

不要使用Application.dataPath或类似的东西,你从二进制资产文件加载静态链接的资产.

加载的mydata是二进制.用于Encoding.ASCII.GetString(mydata.bytes)从中获取实际字符串.