You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity导出游戏后如何正确存储并读取跨设备可访问的字符串

核心问题原因
  • 硬编码本地绝对路径(比如C:\Users\User\Desktop\string.txt)的方案完全不可行:不同设备的系统分区、用户名、目录权限都存在差异,打包安装后程序不可能访问到你开发机上的桌面文件,必然读取失败。
  • Resources.Load<string>() 无法生效的原因:Unity的Resources系统不支持直接加载string类型,string不是Unity可识别的序列化资源类型,泛型参数传string永远返回空值。
可落地的跨设备读取方案

根据你的文本是否需要运行时修改,选对应方案即可:

方案1:TextAsset放入Resources目录(适合固定不变的静态文本)

这是最简便的静态文本读取方案,内容会被直接打进游戏包体,全平台可正常读取:

  • 操作:把你要存的字符串保存为.txt文件,放到项目里任意名为Resources的文件夹下,比如路径Assets/Resources/string.txt
  • 读取代码:
// 加载时不需要写.txt后缀,路径从Resources根目录开始计算
TextAsset txtAsset = Resources.Load<TextAsset>("string");
string targetStr = txtAsset.text;
// 读取完成后卸载资源,避免内存占用
Resources.UnloadAsset(txtAsset);

方案2:persistentDataPath路径读写(适合运行时可修改的动态文本)

如果你的字符串需要在游戏运行时被修改(比如存档、用户自定义配置),用Unity提供的跨平台可读写路径即可,引擎会自动适配不同系统的合法存储位置,不需要你手动写死绝对路径:

  • 各平台自动映射的路径规则:
    • Windows:C:\Users\当前登录用户\AppData\LocalLow\你设置的公司名\你设置的项目名\
    • 安卓:应用专属沙盒存储目录,不需要额外申请存储权限
    • iOS:应用Documents目录
  • 读写示例代码:
using System.IO;
// 自动拼接全平台通用的文件路径
string filePath = Path.Combine(Application.persistentDataPath, "string.txt");
// 写入字符串
File.WriteAllText(filePath, "需要存储的字符串内容");
// 读取字符串
string readStr = File.ReadAllText(filePath);
  • 提示:如果需要带初始文本,可以把初始txt文件放到StreamingAssets文件夹下,首次启动游戏时拷贝到persistentDataPath再做后续读写。

方案3:ScriptableObject存储(适合和游戏配置绑定的字符串)

如果你的字符串是游戏配置的一部分,直接用ScriptableObject存储更方便,不需要处理文本文件解析:

  • 先定义配置类:
using UnityEngine;
[CreateAssetMenu(fileName = "GameStringConfig", menuName = "Config/Game String")]
public class GameStringConfig : ScriptableObject
{
    public string myString;
}
  • 操作:在Unity编辑器右键菜单创建对应配置资产,把字符串填到资产的字段里即可,可以直接拖到组件的Inspector面板引用,也可以放在Resources目录下加载读取。

内容的提问来源于stack exchange,提问作者The Crazy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:09:29