向用户电话库显示图像

时间:2019-02-19 11:36:14

标签: c# android unity3d storage

我正在开发一款游戏,该游戏具有捕获屏幕截图并将其存储在Windows中的项目文件夹和Android中的com.package文件文件夹中的功能。麻烦的两个步骤是:

1)当我想从本地图库或通过Google照片应用程序查看图片时,找不到图片。但是,当我在com.package文件夹中搜索时,它们就在其中。

2)如何在手机的内部存储器中为游戏创建一个单独的文件夹,并将所有图片存储在那里。

要保存图片,我正在使用Application.persistentpath。还有其他我想念的地方吗?

1 个答案:

答案 0 :(得分:0)

要将图片保存在手机图库可以访问的路径中,

首先,您应该获得读/写权限(READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE)。

您可以在Unity编辑器中设置选项“玩家设置”>“其他设置”>“配置”>“写权限”>“外部(SDCard)” https://docs.unity3d.com/2018.3/Documentation/Manual/class-PlayerSettingsAndroid.html)< / p>

或者您可以自己请求许可(https://docs.unity3d.com/Manual/android-RequestingPermissions.html)。

第二,您应该将图片保存在如下所示的外部存储器中。

using System.IO;

void SavePicture(byte[] texture)
{
    string path = GetExternalStoragePath() + "/picture";
    string fileName = "picture.png";

    if (!Directory.Exists(path))
        Directory.CreateDirectory(path);

    File.WriteAllBytes(path + "/" + fileName, texture);
}

string GetExternalStoragePath()
{
    AndroidJavaClass env = new AndroidJavaClass("android.os.Environment");
    AndroidJavaObject dir = env.CallStatic<AndroidJavaObject>("getExternalStorageDirectory");
    return dir.Call<string>("toString");
}