类比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; } }
总结:开始渲染和结束渲染的时候都有需要执行的事情
可以再研究一下这两个函数: