先看下 效果图

准备工作

0 创建两个摄像机  其中一个 在头顶

1 张圆心是透明的图

2 就是 写好的Shader  ()

仅适用于UGUI 的shader :

Shader "UIEx/Default-Mask"
{Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_Mask ("Mask Texture", 2D) = "white" {}_Color ("Tint", Color) = (1,1,1,1)_StencilComp ("Stencil Comparison", Float) = 8_Stencil ("Stencil ID", Float) = 0_StencilOp ("Stencil Operation", Float) = 0_StencilWriteMask ("Stencil Write Mask", Float) = 255_StencilReadMask ("Stencil Read Mask", Float) = 255_ColorMask ("Color Mask", Float) = 15}SubShader{Tags{"Queue"="Transparent""IgnoreProjector"="True""RenderType"="Transparent""PreviewType"="Plane""CanUseSpriteAtlas"="True"}Stencil{Ref [_Stencil]Comp [_StencilComp]Pass [_StencilOp]ReadMask [_StencilReadMask]WriteMask [_StencilWriteMask]}Cull OffLighting OffZWrite OffZTest [unity_GUIZTestMode]Blend SrcAlpha OneMinusSrcAlphaColorMask [_ColorMask]Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata_t{float4 vertex   : POSITION;float4 color    : COLOR;float2 texcoord : TEXCOORD0;};struct v2f{float4 vertex   : SV_POSITION;fixed4 color    : COLOR;half2 texcoord  : TEXCOORD0;};fixed4 _Color;v2f vert(appdata_t IN){v2f OUT;OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex);OUT.texcoord = IN.texcoord;
#ifdef UNITY_HALF_TEXEL_OFFSETOUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
#endifOUT.color = IN.color * _Color;return OUT;}sampler2D _MainTex;sampler2D _Mask;fixed4 frag(v2f IN) : SV_Target{half4 color = tex2D(_MainTex, IN.texcoord) * IN.color;// clip (color.a - 0.01);half4 color2 = tex2D(_Mask, IN.texcoord);return fixed4(color.r, color.g, color.b, color2.r);}ENDCG}}
}

OK了   有了 这两个 就可以 创建我们的小地图了

然后 创建 一个 材质球 把我们的 shader 放上去

可以看到 有两个可以 放置 图片的地方 先放着 不用管 一会有用

3 创建一个 RenderTexture

刚开始 创建 可能 是空白的

4 然后 把这个 RenderTexture 放在 头顶Camera的Target Texture 中

5 然后 把 我们准备好的 图片放在 我们的材质球中

在UGUI 中 创建一个Raw Image

放入我们的RenderTexture 和 我们的material

就圆满的 实现了 小地图 的制作

当然了 如果 你是 用NGUI的话  请使用下面的 shader

Shader "Compressed Masked shader 2 sided cut out" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 0)
_Shininess ("Shininess", Range (0.01, 2)) = 0.078125
_SpecPower ("SpecPower", Range (0.01, 5)) = 0.078125
_MainTex ("Base (RGB))", 2D) = "white" {}
_EffectTex ("Effect Texture (RGB)", 2D) = "white" {}
}
// Blinn
SubShader {
// Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
AlphaTest Greater 0.1
cull off
LOD 300CGPROGRAM
#pragma surface surf BlinnPhong alphatest:_Cutoff addshadow sampler2D _MainTex, _EffectTex;
float4 _Color;
float _Shininess, _SpecPower;struct Input {
float2 uv_MainTex;
};void surf (Input IN, inout SurfaceOutput o) {
half4 color = tex2D(_MainTex, IN.uv_MainTex);
half4 effectColor = tex2D(_EffectTex, IN.uv_MainTex);
float spec = effectColor.r;
spec=spec*spec;
o.Albedo = color.rgb *  (half3(1,1,1)*(1-effectColor.g) + _Color.rgb*effectColor.g);
o.Gloss = _SpecPower * spec;
o.Alpha = color.a * effectColor.b;
o.Specular = _Shininess * effectColor.r;
}
ENDCG
}
// Lambert
SubShader {
Tags {"Queue"="Geometry"}
AlphaTest Greater 0.1
Blend SrcAlpha OneMinusSrcAlpha
cull off
LOD 300CGPROGRAM
#pragma surface surf Lambert alphatest:_Cutoffsampler2D _MainTex, _EffectTex;
float4 _Color;
float _Shininess, _SpecPower;struct Input {
float2 uv_MainTex;
};void surf (Input IN, inout SurfaceOutput o) {
half4 color = tex2D(_MainTex, IN.uv_MainTex);
half4 effectColor = tex2D(_EffectTex, IN.uv_MainTex);
o.Albedo = color.rgb *  (half3(1,1,1)*(1-effectColor.g) + _Color.rgb*effectColor.g);
o.Gloss = _SpecPower * effectColor.r;
o.Alpha = color.a * _Color.a * effectColor.b;
o.Specular = _Shininess * effectColor.r;
}
ENDCG
}
}

然后 材质球 如下 放置 图片 即可 剩下的 都一样啦~

【Unity】NGUI/UGUI 小地图制作相关推荐

  1. Unity中ugui如何制作不规则按键的两种方法

    Unity中ugui如何制作不规则按键的两种方法 两种不同的方案 目前,关于这个问题如何,解决通过搜索引擎我们能找到两种不同的方案: 多边形碰撞器: 该方法是指给精灵(Sprite)添加一个多边形碰撞 ...

  2. Unity中UGUI小地图实现的原理

    计算出Unity中场景的长于宽,计算出人物在场景中的X与Y轴,然后计算X与Y的位置在场景大地图上的比例,按照比例给小地图赋值即可. public class UIMap : MonoBehaviour ...

  3. Unity NGUI高端游戏小地图6组图标Unity游戏素材资源(UGUI可用图片素材)

    Unity NGUI高端游戏小地图6组图标Unity游戏素材资源(UGUI可用图片素材) 项目下载 Demo下载地址 效果图 例子场景 项目下载 Demo下载地址

  4. 【Unity】UIElements 渲染细节,比NGUI/UGUI/FairyGUI好在哪?

    为什么要关注 UIElements  ? 因为要有运行时版本了.  UIElements 在一开始推出的时候就在文档中提到将来会有运行时版本,但是具体什么时候没有说. Unity运行时UI解决方案 还 ...

  5. Unity NGUI 网络斗地主 -界面制作

    Unity NGUI 网络斗地主 -界面制作 源文件在群(63438968群共享!) @灰太龙 这一节说一下NGUI的界面摆放,并且教会大家使用NGUI的自适应功能! 在这里感谢@Gamer,是他给我 ...

  6. 使用Unity的UGUI制作带时间头的相册

    Unity  UGUI相册制作并且加上时间头的效果 在介绍排版之前需要先了解一下Unity中的排版布局方式的三个组件 1.Horizontal Layout Group(水平布局) 1.Padding ...

  7. 【Unity】UGUI超级简单的摇杆制作,摇杆控制物体移动

                [Unity]UGUI超级简单的摇杆制作,摇杆控制物体移动 目录 1.效果展示 2.博客介绍 3.具体内容和思路 (1)摇杆制作 (2)移动控制 4.资源包下载 5.推送 6. ...

  8. Unity NGUI 3.0.4版本 制作网络版斗地主

    Unity NGUI 3.0.4版本 @by 灰太龙  开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...

  9. unity简易的摄像机小地图制作

    记录一下fps游戏的简易的小地图制作过程,先放一下效果图 如图我们需要在地图上显示敌人和玩家的特殊图标,但是摄像机识别Culling Mask的是layer层,所以通过设置这个层的id来让主摄像机不显 ...

最新文章

  1. 课程 | 中科院教授带你快速入门机器学习
  2. 机器学习_生成式模型与判别式模型
  3. 最近后缀.Scaletto,.com}KBK,com}BET,.Fuchsi勒索病毒开始爆发…
  4. php中strtotime的意思,php中strtotime函数用法详解
  5. 数据结构-Hash总结(二)
  6. SpringBoot+MyBatis+Redis实现SSO单点登录系统(二)
  7. (转)解决Google Adsense广告只显示英文的问题
  8. 报表统计(六) 访问数据库
  9. 探讨【IGE】的源代码【三】。
  10. 听鬼哥说虐心的2048简化过程
  11. 使用vcpkg安装numcpp与opencv4[contrib,world]
  12. matlab开始如何设置,MATLAB 2018B: 如何创建快捷方式
  13. 浅谈敏捷 - Scrum
  14. Linux DMA Engine framework(2)_功能介绍及解接口分析
  15. 多个.xslx和.txt文件合并
  16. 今日头条2017校招编程题
  17. 吴恩达Coursera深度学习课程 deeplearning.ai (5-2) 自然语言处理与词嵌入--编程作业(二):Emojify表情包
  18. Windows共享、打印机操作、远程桌面
  19. xboxone硬盘坏的表现_硬盘数据恢复方法实测:硬盘坏了能恢复数据吗?
  20. 世界各国国旗及国家名称

热门文章

  1. INFOR-CRB环境搭建
  2. 5 封装性和private关键字
  3. 修改自己电脑连接的路由器的配置网址192.168.1.1
  4. R语言:scatterplot3d(绘制三维散…
  5. 《我要飞,永远都不会累 》---伤感留言
  6. 昂瑞威 HS6621 低功耗蓝牙芯片烧录调试
  7. Java 生成随机中文、英文姓名(下)
  8. 揭秘信用卡代还软件对卡有什么影响?乐猫智服会封卡降额吗?
  9. mysql 在线热备_MySQL 热备份实现
  10. ZJM 与生日礼物(字典树)