Unity中手机截屏后存储到本地存储DCIM/ScreernShot文件夹内
时间: 2024-04-16 15:25:24 浏览: 240
手机屏幕截图保存到本地
在Unity中,你可以使用以下代码将手机截屏保存到本地存储的DCIM/Screenshot文件夹内:
```csharp
using UnityEngine;
using System.IO;
public class ScreenShot : MonoBehaviour
{
// 截屏按钮点击事件
public void CaptureScreen()
{
StartCoroutine(SaveScreenshot());
}
// 保存截屏的协程
private IEnumerator SaveScreenshot()
{
// 等待一帧,确保UI的更新完成
yield return new WaitForEndOfFrame();
// 创建截屏贴图,并设置其大小和位置
Texture2D screenshot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
screenshot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
screenshot.Apply();
// 获取截屏的字节数组
byte[] bytes = screenshot.EncodeToPNG();
// 创建存储路径
string folderPath = Path.Combine(Application.persistentDataPath, "DCIM/Screenshot");
Directory.CreateDirectory(folderPath);
// 获取当前时间作为截屏文件名
string fileName = System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";
// 保存截屏到本地存储
string filePath = Path.Combine(folderPath, fileName);
File.WriteAllBytes(filePath, bytes);
// 刷新本地存储
AndroidJavaClass galleryClass = new AndroidJavaClass("android.media.MediaScannerConnection");
if (galleryClass != null)
{
galleryClass.CallStatic("scanFile", new object[] { filePath, null });
}
Debug.Log("截屏保存成功:" + filePath);
}
}
```
这段代码首先创建了一个截屏贴图,然后将其保存为PNG格式的字节数组。接下来,它创建了存储路径,并将截屏保存到该路径下。最后,使用`MediaScannerConnection`类刷新本地存储,以便在相册中显示新保存的截屏。
你可以将以上代码添加到你的Unity脚本中,并在需要截屏时调用`CaptureScreen()`方法。截屏将保存到DCIM/Screenshot文件夹内。请注意,在Android设备上测试时才会生效,因为iOS设备不允许直接访问DCIM文件夹。
阅读全文