版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15020543/article/details/83653097
在许多游戏里,我看到都有小地图这个模块,对于玩家而言很友好,所以今天研究一下。
本人能力有限,利用CustomRenderTexture实现。
环境:Unity2018.2.13f1
Demo下载:https://download.csdn.net/download/qq_15020543/10765062
(如果没有积分就加我好友,我用QQ发你)
先简单的说一下基本流程。
- 创建一个相机,用来监视主角(或者地图全局)的移动。
- 创建CustomRenderTexture,用来接收相机传来的图像。
- 创建小地图UI(RawImage),将CustomRenderTexture设为材质。
接下来我们来实现。
1.在Hierarchy新建一个Camera,命名为MapCamera
2.在Project新建CustomRenderTexture,命名为MapMirror
3.新建一个MiniMap层,用来限制相机渲染的范围,否则会造成大量不必要的Batches
随便找一个游戏物体
4.找到第一步创建的MapCamera,将ClearFlag设置为Solid Color,将相机渲染模式设置为正交(避免因为距离原因显示出现误差),把Culling Mask设为MiniMap层,把Target Texture设为刚刚创建的MapMirror
5.在需要在地图上投影的游戏物体下面加上Quad命名为HeroIcon,作为他在地图上的图标
将HeroIcon绕X轴旋转90度,Y设为10(保证在人物头顶)
新建一个材质球命名为HeroIconMaterial,移动到HeroIcon下的Materials里
把准备好的图片拖到空白处
6.创建小地图
创建Image命名为MapMask并增加Mask组件,作为遮罩(一旦元素出了遮罩,就不显示)
创建RawImage命名为Map并作为MapMask子物体,将Texture设为MapMirror,作为地图。
将MapMask锚点设为左上角。