之前那篇文章后,和同事又就这个问题讨论了一下,发现,其实不需要那么死心眼画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