原由
开发时碰到一个需求,两个手机APP,一个保存数据,一个读取数据。用Unity自带的PlayerPrefs不能满足需求,PlayerPrefs只能将数据保存在Android/data/包名下面,所以两个APP保存的数据不能进行互通,想要互通的话就要保存到手机的根目录下。
导入插件
将Easy Save插件导入Unity工程中,然后我们使用Easy Save 3版本进行操作,这里使用的Unity版本是Unity2019
设置保存路径
点击Window,选择Easy Save 3,会打开Easy Save 3的配置框,设置Directory为Data 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