NGUI 圆形 裁剪

void CustomFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols)
	{
		Vector4 v = drawingDimensions;
		Vector4 u = drawingUVs;
		Color32 c = drawingColor;
		int countTriangle = 9;
		//计算宽高;
		float width = v.z - v.x;
		float height = v.w - v.y;
		float radius = width / 2;

		float widthUvs = u.z - u.x;
		float heightUvs = u.w - u.y;

		float uvsRadHeight = heightUvs / 2;
		float uvsRadWidth = widthUvs / 2;

		float angle = 0;
		float radian = 0;

		for (int cnt = 0; cnt < 360; cnt++) {
			angle = 1f * cnt;
			radian = Mathf.Deg2Rad * angle;
			float tempY = radius * Mathf.Sin (radian);
			float tempX = radius * Mathf.Cos (radian);

			float tempYUvs = uvsRadHeight * Mathf.Sin (radian);
			float tempXUvs = uvsRadWidth * Mathf.Cos (radian);
			
			verts.Add (new Vector3 (v.x, v.y + radius));
			verts.Add (new Vector3 (v.x + radius - tempX, v.w - radius + tempY));
			verts.Add (new Vector3 (v.z, v.w - radius));
			verts.Add (new Vector3 (v.z, v.y + radius));


			uvs.Add (new Vector2 (u.x, u.y + uvsRadHeight));
			uvs.Add (new Vector2 (u.x + uvsRadWidth - tempXUvs, u.w - uvsRadHeight + tempYUvs));
			uvs.Add (new Vector2 (u.z, u.w - uvsRadHeight));
			uvs.Add (new Vector2 (u.z, u.y + uvsRadHeight));
				
			cols.Add (c);
			cols.Add (c);
			cols.Add (c);
			cols.Add (c);

		}


	}

360个三角拼接而成。。木有效率可言。。待优化。。

mathf.Sin()是弧度  不是角度。。。需要转换下。。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值