Unity游戏 - 将保存的数据设为私有(除了我的应用程序以外不可见)

时间:2018-01-07 15:03:45

标签: android unity3d

我正在使用Application.persistentDataPath路径来保存我的应用程序所需的图形内容。不幸的是,我无法强迫Unity将其设为私有(Android docs),因此任何具有基本知识的用户都可以可见并且可以抓取来自路径Android/data/com.mycompany.myapp/files/的Android。我尝试了更多的东西,其中将播放器设置/写入权限设置为内部没有解决它。

我知道我可以创建原生Intent并从Unity游戏中运行它们,但看起来它是通过反射实现的,我需要快速加载数据

此内容无法随应用程序一起提供(在用户购买后下载)并且预计会尽快加载 - 它有很多图片 - 至少约有200MB。

如何强制Unity使用私有存储?或者我如何至少从用户隐藏整个文件夹?

1 个答案:

答案 0 :(得分:0)

我设法找到了一个简单的解决方案,所以这里是给你的: 我用我想要的私人文件夹名称调用Android本机函数getDir并将其存储到静态属性ap。如果我不在Android上,我使用Application.persistentDataPath。 结果: persistentDataPath返回/storage/emulated/0/Android/data/com.mycomp.myapp/files getDir返回/data/user/0/com.mycomp.myapp/app_pFiles 完整代码: public static class FolderHelper {     //缓存的值     私有静态字符串ap;     static FolderHelper()     { #if UNITY_ANDROID&& !UNITY_EDITOR         尝试         {             使用(AndroidJavaClass jc = new AndroidJavaClass(" com.unity3d.player.UnityPlayer"))             {                 使用(AndroidJavaObject jo = jc.GetStatic< AndroidJavaObject>(" currentActivity"))                 {                     ap = jo.Call< AndroidJavaObject>(" getDir"," pFiles",0).Call< string>(" getAbsolutePath");                 }             }         }         catch(System.Exception e)         {             Debug.LogWarning(e.ToString());             ap = Path.GetFullPath(Application.persistentDataPath);         } #其他         ap = Path.GetFullPath(Application.persistentDataPath); #万一     }     //其他代码取决于属性ap }