【Unity】NGUI/UGUI 小地图制作
先看下 效果图
准备工作
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 小地图制作相关推荐
- Unity中ugui如何制作不规则按键的两种方法
Unity中ugui如何制作不规则按键的两种方法 两种不同的方案 目前,关于这个问题如何,解决通过搜索引擎我们能找到两种不同的方案: 多边形碰撞器: 该方法是指给精灵(Sprite)添加一个多边形碰撞 ...
- Unity中UGUI小地图实现的原理
计算出Unity中场景的长于宽,计算出人物在场景中的X与Y轴,然后计算X与Y的位置在场景大地图上的比例,按照比例给小地图赋值即可. public class UIMap : MonoBehaviour ...
- Unity NGUI高端游戏小地图6组图标Unity游戏素材资源(UGUI可用图片素材)
Unity NGUI高端游戏小地图6组图标Unity游戏素材资源(UGUI可用图片素材) 项目下载 Demo下载地址 效果图 例子场景 项目下载 Demo下载地址
- 【Unity】UIElements 渲染细节,比NGUI/UGUI/FairyGUI好在哪?
为什么要关注 UIElements ? 因为要有运行时版本了. UIElements 在一开始推出的时候就在文档中提到将来会有运行时版本,但是具体什么时候没有说. Unity运行时UI解决方案 还 ...
- Unity NGUI 网络斗地主 -界面制作
Unity NGUI 网络斗地主 -界面制作 源文件在群(63438968群共享!) @灰太龙 这一节说一下NGUI的界面摆放,并且教会大家使用NGUI的自适应功能! 在这里感谢@Gamer,是他给我 ...
- 使用Unity的UGUI制作带时间头的相册
Unity UGUI相册制作并且加上时间头的效果 在介绍排版之前需要先了解一下Unity中的排版布局方式的三个组件 1.Horizontal Layout Group(水平布局) 1.Padding ...
- 【Unity】UGUI超级简单的摇杆制作,摇杆控制物体移动
[Unity]UGUI超级简单的摇杆制作,摇杆控制物体移动 目录 1.效果展示 2.博客介绍 3.具体内容和思路 (1)摇杆制作 (2)移动控制 4.资源包下载 5.推送 6. ...
- Unity NGUI 3.0.4版本 制作网络版斗地主
Unity NGUI 3.0.4版本 @by 灰太龙 开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...
- unity简易的摄像机小地图制作
记录一下fps游戏的简易的小地图制作过程,先放一下效果图 如图我们需要在地图上显示敌人和玩家的特殊图标,但是摄像机识别Culling Mask的是layer层,所以通过设置这个层的id来让主摄像机不显 ...
最新文章
- 课程 | 中科院教授带你快速入门机器学习
- 机器学习_生成式模型与判别式模型
- 最近后缀.Scaletto,.com}KBK,com}BET,.Fuchsi勒索病毒开始爆发…
- php中strtotime的意思,php中strtotime函数用法详解
- 数据结构-Hash总结(二)
- SpringBoot+MyBatis+Redis实现SSO单点登录系统(二)
- (转)解决Google Adsense广告只显示英文的问题
- 报表统计(六) 访问数据库
- 探讨【IGE】的源代码【三】。
- 听鬼哥说虐心的2048简化过程
- 使用vcpkg安装numcpp与opencv4[contrib,world]
- matlab开始如何设置,MATLAB 2018B: 如何创建快捷方式
- 浅谈敏捷 - Scrum
- Linux DMA Engine framework(2)_功能介绍及解接口分析
- 多个.xslx和.txt文件合并
- 今日头条2017校招编程题
- 吴恩达Coursera深度学习课程 deeplearning.ai (5-2) 自然语言处理与词嵌入--编程作业(二):Emojify表情包
- Windows共享、打印机操作、远程桌面
- xboxone硬盘坏的表现_硬盘数据恢复方法实测:硬盘坏了能恢复数据吗?
- 世界各国国旗及国家名称