UnityUGUI功能之三渲二
简介在项目开发中有时候你会遇到将3D场景中的画面渲染到2D中,例如摄像机的功能,3D人物展示在个人信息面板中等功能,自己也将自己的开发思路进行总结并分享,希望大佬们能多指导,小菜们也能找到一种开发思路用到的API----RenderTextureDescriptor这是一个包含了创建纹理所需的信息的结构体。官方介绍到它可以被复制,缓存和重用。输入的宽高单位为像素----RenderTexture.
·
简介
在项目开发中有时候你会遇到将3D场景中的画面渲染到2D中,例如摄像机的功能,3D人物展示在个人信息面板中等功能,自己也将自己的开发思路进行总结并分享,希望大佬们能多指导,小菜们也能找到一种开发思路
用到的API
----RenderTextureDescriptor
这是一个包含了创建纹理所需的信息的结构体。官方介绍到它可以被复制,缓存和重用。
输入的宽高单位为像素
----RenderTexture.GetTemporary
申请一个临时渲染的纹理,需要RenderTextureDescriptor来提供纹理的属性
----RenderTexture.ReleaseTemporary
释放一个临时渲染的纹理。再重复生成临时纹理时,记得将不需要的纹理进行释放
个人案例代码
下面展示一些
//创建纹理代码
static RenderTextureDescriptor weaponRTD = new RenderTextureDescriptor(244, 433, RenderTextureFormat.Default, 24);
public static void Create3R2(Camera camera, RawImage rawImage)
{
Release3R2(camera, rawImage);
RenderTexture rt = (RenderTexture.GetTemporary(weaponRTD));
camera.targetTexture = rt;
camera.enabled = true;
rawImage.texture = rt;
rawImage.color = new Color(1, 1, 1, 1);
}
//释放纹理代码
public static void Release3R2(Camera camera, RawImage rawImage)
{
rawImage.color = new Color(1, 1, 1, 0);
RenderTexture rt = camera.targetTexture;
camera.targetTexture = null;
rawImage.texture = null;
if (rt != null)
RenderTexture.ReleaseTemporary(rt);
camera.enabled = false;
}
注意事项
最主要的就是别忘记把临时分配的纹理给释放掉
更多推荐
所有评论(0)