(十)UI Mesh

1.概述

在unity 网格系列的最后来处理一下UGUI的mesh问题。ugui所有的网格mesh默认为四边形(可以通过自定义改为特殊形状,比如圆形圆环等),边长为1,即mesh顶点坐标为四个。由于所有的ui均从Graphic类衍生,所以只要重写虚方法OnPopulateMesh即可。OnPopulateMesh存在两个,入口参数不同,一个时VertexHelper一个时Mesh。入口参数为Mesh的方法已经过失,所以本文主讲VertexHelper生成mesh的方法。如下所示:

    protected override void OnPopulateMesh(VertexHelper vh)
    {
   
        base.OnPopulateMesh(vh);
        vh.Clear();

        vh.AddVert(new Vector3(-50,-50), Color.white, new Vector2(0, 0));
        vh.AddVert(new Vector3(50, -50), Color.red, new Vector2(1, 0));
        vh.AddVert(new Vector3(50, 50), Color.red, new Vector2(1, 1));
        vh.AddVert(new Vector3(-50, 50), Color.white, new Vector2(0, 1));

        vh.AddTriangle(0, 1, 2);
        vh.AddTriangle(0, 2, 3);
    }

2.UI Mesh

2.1 操作步骤

新建canvas,并在canvas下新建空的游戏物体,新建一个继承自Graphic脚本并挂载在其上。然后就可以重写OnPopulateMesh方法,并自定义网格。比如可以自定义圆形或者圆环,或者采用ui进行函数曲线的绘制等。

**注意:**在进行网格顶点计算时,要考虑ui的大小,比如概述中顶点坐标对应游戏物体大小为100*100,也可以使用方法GetPixelAdjustedRect()来获取像素大小。

3.2 VertexHelper添加顶点

3.2.1 普通方法

普通方法如概述所示,只要定义顶点,每个顶点的颜色、uv以及三角形即可。颜色可以默认为白色。

3.2.2 顶点编辑

如果要编辑某个顶点信息可以采用PopulateUIVertex方法获取到某个顶点,然后采用SetUIVertex方法重新设置顶点属性。

    void CreateMeshRegular(VertexHelper vh)
    {
   
        Rect size = GetPixelAdjustedRect();

        vh.AddVert(new Vector3(-0.5f * size.width, -0.5f * size.height), Color.white, new Vector2(0, 0));
        vh.AddVert(new Vector3(0.5f * size.width, -0.5f * size.height), Color.red, new Vector2(1, 0));
        vh.AddVert(new Vector3(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值