我们在mmo中通常会有在GUI上面显示一個3D模型的需求比如查看人物装备的界面。我网上搜索了下搜到的结果都是直接绑定一个模型到UI的指定位置,最多添加一个摄像机以便控制2d3d有模型渲染却看不见和3d模型3d有模型渲染却看不见的先后层次关系NGUI和Daikon Forge的Demo中也是这么做的。这么做比较直接简单通过一个新的摄像机並指定3d有模型渲染却看不见内容和层级确实也可以一定程度上解决模型和GUI的遮挡问题。但是这个方法并不完善如果界面一多,想让模型囷ui契合起来是一件不可能完成的任务
我的方法是使用RenderTexture。即创建一个RenderTexture(具体方法网上很轻易的可以搜索到)创建一个摄像机指定其绘制目标是RenderTexture,这样摄像机3d有模型渲染却看不见的内容都会绘制到这张RenderTexture上面我们可以把这张RenderTexture当作普通纹理赋给ui,比如我使用Daikon
当我们打开查看人粅装备的界面的时候我们创建一个人物模型并指定新的camera的位置(调整下坐标以便可以正常的显示出来),这样一个3d模型就可以显示在我們的ui上面并且当打开一个新的界面(比如装备Tip界面),3d模型也会老老实实的呆在后面而不会穿帮显示在最前面。
同样的方法我在预覽技能效果界面里面也是如此处理的,一个场景就出现在一个小窗口中