Unity - 构建 .apk 时如何保存 .csv 文件
Posted
技术标签:
【中文标题】Unity - 构建 .apk 时如何保存 .csv 文件【英文标题】:Unity - How do I save .csv files when building an .apk 【发布时间】:2021-10-09 01:43:35 【问题描述】:我目前将列表存储在 .csv 文件中,但是,当我构建 .apk 时,就像这些文件根本不存在一样。我如何设法将这些文件保存在构建中以便一切正常?
这是我目前针对这种情况的代码的 sn-p
private static string TODCSVPath = "/Scripts/TOD/TOD_Questions.csv";
public void GenerateTODS() //called in Awake()
string[] allLines = File.ReadAllLines(Application.dataPath + TODCSVPath);
foreach (string uncas in allLines)
questions.Add(uncas);
在编辑器中一切正常,但我真的很难理解我需要修复什么。我搜索了一下,有人说使用string[] allLines = File.ReadAllLines(Application.persistentDataPath + TODCSVPath);
而不是string[] allLines = File.ReadAllLines(Application.dataPath + TODCSVPath);
但这会立即在控制台中引发错误。
还看到了一些关于创建TextAsset
然后从中读取文件的内容,但我根本无法做到。
注意:不知道这是否有帮助,但我所有的 .csv 文件都只有一列!
任何帮助或指导将不胜感激。谢谢!
【问题讨论】:
建议使用 Application.persistentDataPath 是一个不错的选择。确保路径确实存在(如果需要,创建文件夹)。 persistentDataPath 不会在您的项目文件夹中,通过打印调试检查它的位置 只有资源文件夹中的文件是构建的一部分。 docs.unity3d.com/ScriptReference/Resources.Load.html 【参考方案1】:您有多种选择:
1- 资源
Unity 在播放器构建中包含Resources folders 下的资产。只需将您的 .csv 文件放在 Assets/Resources/ 文件夹下。然后你可以像这样访问它:
TextAsset myTextAsset = Resources.Load<TextAsset>("myfile"); // omit file extension
string csvText = myTextAsset.text;
...
2- 作为文本资源的引用
您还可以将 .csv 文件作为文本文件链接到场景中的 MonoBehaviour 或进入构建的资源中。这就是材料和其他资产进入玩家构建的方式。
例如,如果您在构建场景中的 GameObject 上有此组件,则可以访问 TextAsset。从技术上讲,“文件”不包含在播放器构建中,因为 Unity 会打包资产。但您可以访问 CSV 内容。
public class MyMono : MonoBehaviour
[SerializeField] TextAsset _textAsset;
void Start()
string csvText = _textAsset.text;
...
【讨论】:
以我的拙见,似乎Resource.Load < TextAsset > ( 'fileNameOnly' )
是要走的路,而不是'fileNameWithExtension' 作为Load
函数调用的参数。其余信息很好:-)以上是关于Unity - 构建 .apk 时如何保存 .csv 文件的主要内容,如果未能解决你的问题,请参考以下文章
构建失败:无法在 Unity 上构建 Android .apk
当我正在尝试为我正在通过Unity开发的游戏构建apk文件时,Android SDK未正确安装错误?