yield return new WaitForEndOfFrame();//一定先要调用这个
Texture2D photoTex = new Texture2D (Screen.width, Screen.height, TextureFormat.RGB24, false);
photoTex.ReadPixels(new Rect(0.0f, 0.0f, Screen.width * 1.0f, Screen.height*1.0f), 0, 0);
photoTex.Apply();
以上就可以生成一张纹理图 在unity中使用
byte[] bytes = photoTex.EncodeToPNG();//将图片转成2进制流
FileStreamcache = new FileStream(PngPath, FileMode.Create); //PngPath 相应平台路径
cache.Write(bytes,0,bytes.Length);
cache.Close();
以上方式2进制流转成图片 存到对应目录下
public string PngPath
{
get{
string path=null;
if(Application.platform==RuntimePlatform.IPhonePlayer)
{
path= Application.dataPath.Substring (0, Application.dataPath.Length - 5);
path = path.Substring(0, path.LastIndexOf('/'))+"/Documents/";
}
else if(Application.platform==RuntimePlatform.Android)
{
path= Application.persistentDataPath+"/";
}
else
{
path=Application.dataPath+"/Resource/GameData/";
}
return path;
}
}
以上方式是比较好的一种截屏方式,避免www类的使用 如果要在其他平台使用 可以PluginSDK.TakePhono(bytes,bytes.Length * sizeof(byte));将2进制流传过去,利用相应api转成图片格式
OC中
void _TakePhono( void * data ,int ilength){
NSData *sData = [NSData dataWithBytes:data length:ilength];
UIImage * image = [UIImage imageWithData:sData];
UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);
}
补充说明:以上方法 使用unity3.56 可以解决ios6截屏问题。