[Unity]利用Mesh在Unity中绘制扇形图片2

通过与同事讨论,找到了一种更简洁的方法在Unity中使用Mesh绘制扇形图片。由于图片非圆形部分透明,只需将正方形图片切割为4个三角形,最多绘制5个三角形即可达到效果。
摘要由CSDN通过智能技术生成

之前那篇文章后,和同事又就这个问题讨论了一下,发现,其实不需要那么死心眼画n个三角形,因为图片本身除了圆以外的地方都是透明的, 画出来也没事。
这样的话, 其实可以把正方形的图片分成4个三角形,这样的话,最多也就画5个三角形就够了。
这里写图片描述

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[RequireComponent(typeof(MeshRenderer), typeof(MeshFilter))]
public class TestProgressBar : MonoBehaviour
{   
    public float radius = 2;
    [Range(0,360)]//把角度限制在0-360
    public float startAngleDegree = 0;
    [Range(0,360)]//把角度限制在0-360
    public float angleDegree = 100;
    public int angleDegreePrecision = 1000;
    public int radiusPrecision = 1000;
    //与之前的代码相比, 已经不需要分割的三角形数了

    private MeshFilter meshFilter;

    private SectorMeshCreator creator = new SectorMeshCreator();

    [ExecuteInEditMode]
    private void Awake()
    {
        meshFilter = GetComponent<MeshFilter>();
    }

    private void Update()
    {
        meshFilter.mesh = creator.CreateMesh(radius, startAngleDegree, angleDegree, angleDegreePrecision, radiusPrecision);
    }

    //在Scene界面画辅助线
    void OnDrawGizmos()
    {
        Gizmos.color = Color.gray;
        DrawMesh();
    }

    //在Scene界面画辅助线
    void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.green;
        DrawMesh();
    }

    private void DrawMesh()
    {
        Mesh mesh = creator.CreateMesh(radius, startAngleDegree, angleDegree, angleDegreePrecision, radiusPrecision);
        int[] tris = mesh.triangles;
        for (int i = 0; i < tris.L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值