原文链接:https://blog.csdn.net/a821041976/article/details/51260326
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.IO;
public class CutScreen : MonoBehaviour
{
public void Click()
{
string imagePath = "";
if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
{
// imagePath = "/mnt/sdcard/DCIM/ARphoto/";
//imagePath = "/storage/emulated/0/DCIM/ARphoto/";
imagePath = Application.persistentDataPath;
if (!Directory.Exists(imagePath))
{
Directory.CreateDirectory(imagePath);
}
}
else if (Application.platform == RuntimePlatform.WindowsPlayer)
imagePath = Application.dataPath;
else if (Application.platform == RuntimePlatform.WindowsEditor)
{
imagePath = Application.dataPath;
// imagePath = imagePath.Replace("/Assets", null);
}
Debug.Log(imagePath);
//ScreenCapture.CaptureScreenshot(Application.streamingAssetsPath+ System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString()+"cut.png", 0);//
ScreenCapture.CaptureScreenshot(imagePath+"cut" + System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + ".png", 0);
Debug.Log("Button Clicked. TestClick.++" + imagePath);
}
}
这个我之前写的一个截屏保存的代码,但是不知是什么问题,无法在手机端进行截屏保存 ,但是在unity 3D 上运行是没有问题的,网上关于安卓截屏的很多,但是我可能太菜了,都看得不是很明白。后来发现一个博客,我试了一下,可以实现。
代码如下:
using UnityEngine;
using System;
using System.IO;
public class CutScreen : MonoBehaviour
{
void Click()
{
//获取系统时间并命名相片名
System.DateTime now = System.DateTime.Now;
string times = now.ToString();
times = times.Trim();
times = times.Replace("/", "-");
string filename = "Screenshot" + times + ".png";
//判断是否为Android平台
if (Application.platform == RuntimePlatform.Android)
{
//截取屏幕
Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
texture.Apply();
//转为字节数组
byte[] bytes = texture.EncodeToPNG();
string destination = "/sdcard/DCIM/ARphoto";
//判断目录是否存在,不存在则会创建目录
if (!Directory.Exists(destination))
{
Directory.CreateDirectory(destination);
}
String Path_save = destination + "/" + filename;
//存图片
System.IO.File.WriteAllBytes(Path_save, bytes);
}
Debug.Log( "Button Clicked. TestClick.++");
}
}
还有 在player settings 里要设置改为SDCard。