Unity3d截图

文章中主要参考了 http://blog.csdn.net/anyuanlzh/article/details/17008909;

对其中还有 一些疑惑:就是 如果相机有天空盒 就无法截取到3D物体 比如Cube 等

Camera :主要对物体进行截取 Clear Flags 不选择 天空盒

Camera2: 主要对UI进行截取

using UnityEngine;
using System.Collections;

public class Screenshot : MonoBehaviour
{
    public Camera mainCamera;
    public Camera uiCamera;
    /// <summary>  
    /// 对相机截图。   
    /// </summary>  
    /// <returns>The screenshot2.</returns>  
    /// <param name="camera">Camera.要被截屏的相机</param>  
    /// <param name="rect">Rect.截屏的区域</param>  
    Texture2D CaptureCamera(Camera camera, Camera camera2 ,Rect rect)
    {
        // 创建一个RenderTexture对象  
        RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, -1);
        // 临时设置相关相机的targetTexture为rt, 并手动渲染相关相机  
        camera.targetTexture = rt;
        camera.Render();
        //ps: --- 如果这样加上第二个相机,可以实现只截图某几个指定的相机一起看到的图像。  
        camera2.targetTexture = rt;
        camera2.Render();
        //ps: -------------------------------------------------------------------  

        // 激活这个rt, 并从中中读取像素。  
        RenderTexture.active = rt;
        Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24, false);
        screenShot.ReadPixels(rect, 0, 0);// 注:这个时候,它是从RenderTexture.active中读取像素  
        screenShot.Apply();

        // 重置相关参数,以使用camera继续在屏幕上显示  
        camera.targetTexture = null;
        camera2.targetTexture = null;
        RenderTexture.active = null; // JC: added to avoid errors  
        GameObject.Destroy(rt);
        // 最后将这些纹理数据,成一个png图片文件  
        byte[] bytes = screenShot.EncodeToPNG();
        string filename = Application.dataPath + "/Screenshot.png";
        System.IO.File.WriteAllBytes(filename, bytes);
        Debug.Log(string.Format("截屏了一张照片: {0}", filename));

        return screenShot;
    }

    void OnGUI()
    {
        if (GUILayout.Button("AAAA"))
        {
            CaptureCamera(mainCamera, uiCamera,new Rect(0, 0, Screen.width, Screen.height));
        }
    }
}


Unity3d截图_第1张图片

你可能感兴趣的:(Unity3d截图)