想要在Unity2D中实现一个漂亮的圆环,但是除了前面做过的各种笔记和自学,啥都不会,
但是成功摸索出来,在这里记录一下理解流程。
源代码和使用方式在最下面。
2D圆环的最简单实现
圆环最简单的实现就是自己画一个背景色透明的圆环:
(下面是一张图片,不信你把浏览器背景色调一下)

然后直接往场景里一放就行:

当然这种方式很不行,拉伸大了之后模糊感太大,很难看,而且不易控制大小:

使用Shader实现
2DShader的简单探索(最终代码在最后)
首先2D中用的都是Sprite做渲染,所有显然不适合直接用Mesh顶点作图的方案,
当然如果用Mesh的话也有现成的方案:
https://blog.csdn.net/liuzonrze/article/details/83280463
但只要涉及到渲染肯定就用到Shader,
所以先看看Sprite中怎么用上Shader吧。
首先在场景中创建一个新的2D正方形。
新建一个Shader和材质作用到它上面,编写Shader代码进行探索。
这里就是用到Shader的一种主要调试方式:将值直接当作颜色输出来。
下面这一段代码做的工作就是,
试图将模型顶点在裁剪空间中的坐标输出,
结果是输出全白:
Shader "Custom/CircleEdgeShader"
{
Properties{
_MainTex ("Main Tex", 2D) = "white" {
}
}
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always
// 开启透明度
Blend SrcAlpha OneMinusSrcAlpha
// 设置渲染队列
Tags {
"Queue"="Transparent" "RenderType"="Opaque" }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
// 顶点着色获取
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o

本文介绍如何在Unity2D中使用Shader实现高清且可自定义宽度的圆环效果。通过对UV坐标的分析,逐步探索并实现了圆环的Shader绘制方法,并提供了参数化的C#脚本来控制圆环的大小和宽度。

被折叠的 条评论
为什么被折叠?



