介绍
这篇文章主要讲解了团结实现相机截图功能的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
最近做项目的时候需要在游戏里截一张高清截的图,研究了一下写成脚本,方便以后使用。
脚本可以自定义分辨率,用相机截高清截的图。可以用代码动态截的图,也可以在编辑模式下截的图。
注意截图宽高比要正确,宽高比不正确时可能会出问题。
截图效果:
<强>脚本:强>
CameraCapture。cs
; 使用先;///& lt; summary>///相机截的图///& lt; para>张宇2018 - 07 - 06 - & lt;/para>///& lt;/summary> 公共类CameraCapture: MonoBehaviour {//截图尺寸 公共enum CaptureSize { CameraSize, ScreenResolution, FixedSize }//目标摄像机 公共摄像头targetCamera;//截图尺寸 公共CaptureSize CaptureSize=CaptureSize.CameraSize;//像素尺寸 公共Vector2 pixelSize;//保存路径 公共字符串savePath=癝treamingAssets/?//文件名称 公共字符串文件名=癱ameraCapture.png"; #如果UNITY_EDITOR 私人空间重置(){ targetCamera=GetComponent(); pixelSize=new Vector2 (Screen.currentResolution。宽度,Screen.currentResolution.height); } # endif///& lt; summary>保存截图& lt;/summary>///& lt;参数name=癱amera"在目标摄像机& lt;/param> 公共空间saveCapture () { Vector2大?pixelSize; 如果(captureSize==CaptureSize.CameraSize) { 大?new Vector2 (targetCamera。pixelWidth targetCamera.pixelHeight); }else if (captureSize==CaptureSize.ScreenResolution) { 大?new Vector2 (Screen.currentResolution。宽度,Screen.currentResolution.height); } 字符串路径=应用程序。dataPath公司+“/?+ savePath +文件名; saveTexture(路径,捕捉(targetCamera (int)大小。x (int) size.y)); }///& lt; summary>相机截图& lt;/summary>///& lt;参数name=癱amera"在目标相机& lt;/param> 公共静态Texture2D捕获(相机相机){ 捕获(摄像头,屏幕返回。宽度,Screen.height); }///& lt; summary>相机截图& lt;/summary>///& lt;参数name=癱amera"在目标相机& lt;/param>///& lt;参数name=皐idth"在宽度& lt;/param>///& lt;参数name=癶eight"在高度& lt;/param> 公共静态Texture2D捕获(相机相机,int宽度,int高度){ RenderTexture rt=new RenderTexture(宽度、高度,0); rt.depth=24; rt.antiAliasing=8; 相机。targetTexture=rt; camera.RenderDontRestore (); RenderTexture。积极=rt; Texture2D纹理=new Texture2D(宽度、高度,TextureFormat。ARGB32,假的,真正的); 矩形矩形=new矩形(0,0,宽度、高度); 纹理。ReadPixels(矩形,0,0); 纹理。filterMode=FilterMode.Point; texture.Apply (); 相机。targetTexture=零; RenderTexture。积极=零; 破坏(rt); 返回纹理; }///& lt; summary>保存贴图& lt;/summary>///& lt;参数name=皃ath"在保存路径& lt;/param>///& lt;参数name=皌exture"祝辞Texture2D 公共静态孔隙saveTexture (string路径,Texture2D纹理){ 文件。WriteAllBytes(路径,texture.EncodeToPNG ()); #如果UNITY_EDITOR Debug.Log(“已保存截图到:“+路径); # endif } }
脚本编辑器:
CameraCaptureEditor。cs
; 使用UnityEngine;///& lt; summary>///相机截图编辑器///& lt; para>张宇2018 - 07 - 06 - & lt;/para>///& lt;/summary> (CanEditMultipleObjects) [CustomEditor typeof (CameraCapture))) 公共类CameraCaptureEditor:编辑{ 公共覆盖空白>看完上述内容,是不是对统一实现相机截图功能的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。团结实现相机截图功能的方法