3D游戏中, 一般会需要一个小地图挂在某个角落来提醒玩家位置, 资源位置, BOSS位置等等. 小地图是场景的略缩图, 同时这个小地图应该是实时刷新的, 用于更新玩家在地图中的位置.
为了实时把玩家在场景中的位置反应到小地图上, 首先我们要创建一个新的摄像机放在场景的正上方用于渲染整个场景范围. 摄像机投影方式改为正交, 范围根据场景可移动范围大小调节. 新建一个render texture并且把摄像机输出设置为它, 在UI层级挂一个Raw Image, 把我们刚才创建的texture挂上去, 这是小地图全景应该可以看到了.
这时, 如果打开Profiler, 应该会吓死, 因为这个相机输出虽然为这个鬼样子, 但是它是实实在在把整个场景都渲染了出来, 如果没有LOD, 场景中有多少面, 就渲了多少面, 性能爆炸, 显然不适合作为通用方案. 接下来是我想到的一个解决方案. 新建一个layer, 并且调整摄像机只渲染这个layer, 主相机不要渲染这个layer, 后面会说到这个layer用于存放场景中的各种标识. 摄像机背景改为solid color, alpha置零. 摄像机完整设置应该是这样:
Unity实现游戏小地图
最新推荐文章于 2024-04-16 16:38:42 发布