Unity3d截图两种方式
方式一:
/// <summary>
/// 截屏显示部分
/// </summary>
private WWW
www;
public string path;//图片路径
private Texture2D textrue;//
private
bool isShow = false;//是否显示图片
//获取存取地址
void
platform()
{
if(Application.platform ==
RuntimePlatform.Android)
{
path =
Application.persistentDataPath;
}else if(Application.platform ==
RuntimePlatform.IPhonePlayer)
{
path =
Application.persistentDataPath;
}else if(Application.platform ==
RuntimePlatform.WindowsEditor)
{
path =
Application.dataPath;
path =
path.Replace("/Assets",null);
}
path = path +
"/screenCapture.png";
}
IEnumerator GetCapture()
{
yield
return new WaitForEndOfFrame();
Texture2D tex = new
Texture2D(Screen.width,Screen.height,TextureFormat.RGB24,false);
tex.ReadPixels(new
Rect(0,0,Screen.width,Screen.height),0,0);
tex.Apply();
byte[]
imagebytes = tex.EncodeToPNG();//转化为png图
tex.Compress(false);//对屏幕缓存进行压缩
try
{
FileStream f = new
FileStream(path,FileMode.Create);
f.Write(imagebytes,0,imagebytes.Length);
//保存
}
catch
{
if(MyDebug.instance.isLog)
Debug.Log("保存图片失败,请重试.");
}
yield
return new WaitForSeconds(0.1f);
www = new WWW("file://"+ path);//读取
yield return www;
textrue =
www.texture;
isShow =
true;
}
public void ScreenShot()
{
platform();
StartCoroutine(GetCapture());
}
方式二:
/// <summary>
/// 截屏显示部分
/// </summary>
public string path;//图片路径
//获取存取地址
void platform()
{
if(Application.platform == RuntimePlatform.Android)
{
path = Application.persistentDataPath;
}else if(Application.platform == RuntimePlatform.IPhonePlayer)
{
path = Application.persistentDataPath;
}else if(Application.platform == RuntimePlatform.WindowsEditor)
{
path = Application.dataPath;
path = path.Replace("/Assets",null);
}
path = path + "/screenCapture.png";
}
public void ScreenShot()
{
platform();
Application.CaptureScreenshot("screenCapture.png",1);
}