随笔分类 - Unity / Unity-UGUI
摘要:Mask使用stencil来实现裁剪 要用Stencil方式来实现裁剪,主要涉及到2个步骤: 1) 裁剪区域设置stencil buffer: Mask在自己的GetModifiedMaterial函数中设置。 2) 被裁减物体将自己的stencil id与stencil buffer比较,如果相同
阅读全文
摘要:特效shader添加裁剪区域 使用裁剪区域进行裁剪, 粒子的shader得支持裁剪区域,需要在vert函数中加上下面的代码: #ifdef UNITY_UI_CLIP_RECT c.a *= UnityGet2DClipping(i.worldPosition.xy, _ClipRect); //x
阅读全文
摘要:示意图 1) anchor区域 Vector2 anchorMin; anchor区域左下角与parent左下角的距离(用parent大小的百分比表示) Vector2 anchorMax; anchor区域的右上角与parent右上角的距离(用parent大小的百分比表示) 2) 节点坐标: 是相
阅读全文
摘要:1) Rect rect; a) Sprite Mode为Single时: x, y总是为0; width, height为裁掉空白像素前的大小 b) Sprite Mode为Multiple时: 则x, y为slice区域在Sprite上的位置, 大小为slice区域的大小 2) Vector2
阅读全文
摘要:界面需要做国际化的时候,一般不会在Text组件上使用中文,而是使用id或者key来代替,这个代码用于检测直接写了中文的Text #if UNITY_EDITOR using System.Text; using System.Text.RegularExpressions; using UnityE
阅读全文
摘要:# private PointerEventData _uiPointerEventData; private List<RaycastResult> _uiRaycastResultCache = new List<RaycastResult>(); public bool IsTouchAnyU
阅读全文
摘要:# public class MyText : Text { [SerializeField] protected bool _gray = false; [SerializeField] protected bool _gradient = false; [SerializeField] priv
阅读全文
摘要:# 标签类 public class MultiSelectEnumAttribute : HeaderAttribute { public MultiSelectEnumAttribute(string header) : base(header) { } } # PropertyDrawer类
阅读全文
摘要:【主要用途】 # 编写gui代码时,会经常用设置Text的文本,设置Image的图片,注册按钮点击,禁用按钮点击这样的操作。 把这些控件绑定到Behaviour上,便于代码访问;减少硬编码去Find控件,硬编码的方式不好的地方在于,界面结构的一旦变化就需要改对应的Find代码,外一忘记就有问题了。
阅读全文
摘要:原理:使用一张mask贴图,遮罩部分将alpha值设置为0就行 这边只需要修改一下ui的shader就行,在UI-Default的基础上改下: Shader "Custom/UI-Default-AvatarMask" { Properties { [PerRendererData] _MainTe
阅读全文
摘要:需要修改默认的shader, 像UI-Default, Sprite-Default, 他们默认都没有开启深度测试, 也就是z坐标不参与层级显示(实际调了z坐标偶尔会有效果, 但那个是随机的, 不可靠), 所以需要先修改他们 # 去unity官网下载对应unity版本的buildin_shaders
阅读全文
摘要:类似下面这样的层级结构,白色区域为ScrollView可见区域,RectMask2D添加在ScrollView上。 可以看到Canvas下的Image1没被裁剪掉,不在Canvas下的Image2裁剪掉了。 【原因分析】 RectMask2D内部有一个裁剪对象列表,只有在这个列表中的对象才会被裁剪,
阅读全文