Table of Contents

Unity Render Texture

类比Unreal的Render Target


这个东西可以将相机在3维空间中渲染的结果绘制到UI上。

我的思路

创建一个新的Layer,只有需要渲染到Texture的目标才能放到这个Layer

创建好专用的相机放到场景中,设置相机:只渲染这个特定的Layer,渲染结果输出到Texture,Texture当作图片的源放到UI上,这样就完成了整个渲染到输出的流程

自己按照需求控制相机的位置,一般情况下是建议先摆好相机可能出现的位置点,直接设置Transform移动过去

需要渲染一个物体的时候:

// 渲染自己的时候,把自己全都加到某一个Layer
void _addToNpcOnDialogUILayer()
{
    int uiLayer = LayerMask.NameToLayer("NpcOnDialogUI");
    Transform[] transforms = GetComponentsInChildren<Transform>();
 
    foreach(Transform child in transforms)
    {
        child.gameObject.layer = uiLayer;
    }
}

不再需要渲染一个物体的时候:

// 不再渲染自己的时候,把自己全都加到Player Layer,这里可能有风险
void _removeFromNpcOnDialogUILayer() // To Default Player Layer
{
    int playerLayer = LayerMask.NameToLayer("Player");
    Transform[] transforms = GetComponentsInChildren<Transform>();
 
    foreach (Transform child in transforms)
    {
        child.gameObject.layer = playerLayer;
    }
}

总结:开始渲染结束渲染的时候都有需要执行的事情

缺点

拓展

可以再研究一下这两个函数: