Unity Easy Save数据保存插件将数据保存到Android手机根目录

Unity Easy Save数据保存插件将数据保存到Android手机根目录

原由

开发时碰到一个需求,两个手机APP,一个保存数据,一个读取数据。用Unity自带的PlayerPrefs不能满足需求,PlayerPrefs只能将数据保存在Android/data/包名下面,所以两个APP保存的数据不能进行互通,想要互通的话就要保存到手机的根目录下。

导入插件

将Easy Save插件导入Unity工程中,然后我们使用Easy Save 3版本进行操作,这里使用的Unity版本是Unity2019

设置保存路径

点击Window,选择Easy Save 3,会打开Easy Save 3的配置框,设置DirectoryData Path,设置Default File Path为手机的根目录下的文件,这里设置的是 /storage/emulated/0/Test/Save.es ,其中 /storage/emulated/0 表示根目录, /Test/Save.es 是我新建的文件夹和存储文件。
Directory也可以设置为Persistent Data Path
在这里插入图片描述

测试脚本

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;

public class Test2 : MonoBehaviour
{
    public Text show;
    public Button save;
    public Button read;


    void Start()
    {
        save.onClick.AddListener(() =>
       {
           SaveData();
       });

        read.onClick.AddListener(() =>
        {
            ReadData();
        });
    }

    public void ReadData()
    {
        try
        {
            string s = ES3.Load<string>("b");
            int x = ES3.Load<int>("a");

            show.text = s + "==" + x;
        }
        catch (Exception e)
        {
            show.text = e.Message;
        }

    }

    public void SaveData()
    {
        try
        {
            ES3.Save<int>("a", 11);
            ES3.Save<string>("b", "show");
        }
        catch (Exception e)
        { 
            show.text = e.Message;
        }
    }
}

这里我没有写验证文件夹是否存在的代码,是因为设置完路径,EaseSave会自动生成文件夹

界面

在这里插入图片描述
界面很简单,只有一个文本显示框和两个按钮

测试验证

打包的时候打两个包,两个包的包名不一样,安装到手机上,只在一个APP上点击保存按钮,两个APP上点击读取按钮都可以读到数据。

问题

测试中可能会出现找不到Save.es3文件的情况,这是因为APP没有设置相关的权限,请参考下面网址
https://blog.csdn.net/qq_33547099/article/details/110631476
https://blog.csdn.net/f_957995490/article/details/108102165

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要使用 Unity Easysave3 插件保存 LuaTable 类型数据你需要将 LuaTable 转换为字符串类型数据,然后将其保存到本地或云端。 下面是一个保存 LuaTable 数据的示例代码: ```csharp using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using LuaInterface; using PathologicalGames; using System.IO; public class Test : MonoBehaviour { private LuaTable luaTable; void Start () { // 创建一个 LuaTable 数据 luaTable = LuaScriptMgr.Instance.DoFile("Test.lua") as LuaTable; // 将 LuaTable 转换为字符串 string luaTableStr = ESSerializer.SerializeLuaTable(luaTable); // 保存字符串到本地文件 ES3.Save<string>("luaTable", luaTableStr); } } ``` 在上述代码中,我们首先创建了一个 LuaTable 数据,然后使用 `ESSerializer.SerializeLuaTable()` 方法将其转换为字符串类型数据。最后,我们使用 `ES3.Save()` 方法将字符串数据保存到本地文件中,其中 `"luaTable"` 是该数据的键值,你可以根据需要自定义。 当需要加载保存的 LuaTable 数据时,我们可以使用以下代码: ```csharp string luaTableStr = ES3.Load<string>("luaTable"); LuaTable luaTable = ESUtility.LuaTableFromString(luaTableStr); ``` 在上述代码中,我们使用 `ES3.Load()` 方法加载保存的字符串数据,然后使用 `ESUtility.LuaTableFromString()` 方法将其转换为 LuaTable 数据。这样就可以恢复保存数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值