最近在做项目的时候,需要做到ngui小地图方面的内容,所以自己就去研究了一下,做了一点点小研究,来和大家分享交流一下,如果有更好地方法,大家可以分享一下,争取做的更完善一点。

做游戏或者应用开发我觉得有句话很重要,没有最好的办法,只有最适合的手段。做ngui小地图当然是追求快准狠。快:做的越快越好。准:定位越准越好。狠:省资源和运算,省的越狠越好。好了,废话不多说了,下面介绍两种方式:NGUI插件式小地图、场景坐标投射式小地图。

NGUI插件式小地图:

这种模式下制作小地图速度相当快,只需要导入NGUI插件,整场景渲染成一张贴图,将贴图制作成NGUI的atlas(以上纯属NGUI操作,不懂的请自己搜索一下吧~我懒啊)。接下来就是重点了~
 
首先在NGUI的2DUI中建立一个小地图专用的panel,并且将UIPanel中的Clipping打开,不管是硬切还是软切,能切就好。

ngui小地图

这个就是本人小地图的Panel设置,具体的设置你们自己研究吧。

然后在这个Panel中建立一个Sprite,这个Sprite就是你的场景地图,并且把这个Sprite的缩放的ZY和场景的XZ长度对应起来(这个是偷懒的重点,你的场景多大,Sprite的XY缩放就要多大)

接下来就是在你的Panel的正中央放一个作为定位角色的东西,开始慢慢调试对位了,把游戏中角色的位置和小地图的位置对应调整好。

最后~~代码部分

ngui小地图

真正处理地图运动的就是17行和18行的代码~~看吧~2行代码全部搞定定位。
把这个代码拖到你的小地图Sprite上面,然后再把你的角色拖到Player这个属性上面,接下来你就能看见一个很酷的小地图了。
 
场景投射型小地图:
 
这个方式在Unity3D的官方DEMO  BootCamp里面用的到位。运行这个DEMO的时候我们就能看到左上角一个圆形小地图雷达。这个小地图同样需要一个渲染的场景贴图作为地图,然后需要一个带圆形孔(其实孔的形状自己决定就好,喜欢什么样形状的就什么样形状)的面片,这个面片需要一个带Transparent Alpha_Cancel的shader的材质球,贴图同样也是地图贴图,接下来就需要一个看这个地图的摄像机了,相机保持和角色在同一XZ坐标(写个很简单的同步位置的脚本),小孔面片永远保持在摄像机相同位置,这样运行起来后就可以看到小地图跟着动了,如果需要BootCamp里面那种带方位指示的东西的话,就只需要再创建一个透明通道的面片,带上你自己喜欢的样式的指针贴图。这个方案由于有官方DEMO,就不多说啦~大家自己学习一下就好