Vectrosity插件系列教程之绘制矩形+圆代码
2015年03月16日 16:20
0 点赞
0 评论
更新于 2025-11-21 17:21
在Unity开发中,Vectrosity插件是一个强大的工具,可用于绘制各种图形。本文将详细介绍如何使用Vectrosity插件绘制矩形和圆形,并给出相应的代码示例。
代码实现
using UnityEngine;
using System.Collections;
using Vectrosity;
public class StudyVectrosity : MonoBehaviour
{
// 线条材质
public Material myMaterial;
private VectorLine energyLine;
private Vector2[] energyLinePoints;
private int index = 0;
// Use this for initialization
void Start()
{
// X轴水平线,Y轴水平线
CreteLine(new Vector2(100, Screen.height * 0.1f), new Vector2(100, Screen.height * 0.3f));
CreteLine(new Vector2(100, Screen.height * 0.1f), new Vector2(1200, Screen.height * 0.1f));
energyLinePoints = new Vector2[350];
energyLine = new VectorLine("Energy", energyLinePoints, myMaterial, 3.0f, LineType.Continuous, Joins.Weld);
// 矩形图表
CreateRect(100, 500, 50, 200, Color.green);
CreateRect(150, 700, 50, 400, Color.green);
CreateRect(200, 550, 50, 250, Color.green);
CreateRect(250, 600, 50, 300, Color.green);
CreateRect(300, 500, 50, 200, Color.green);
// 绘制圆形
VectorLine circleLine = new VectorLine("Circle", new Vector2[100], myMaterial, 3.0f, LineType.Discrete, Joins.Weld);
circleLine.MakeCircle(new Vector2(600, 450), 100);
circleLine.SetColor(Color.green);
circleLine.Draw();
}
// Update is called once per frame
void Update()
{
// 可根据需求添加更新逻辑
}
void LateUpdate()
{
if (index < energyLinePoints.Length)
{
// 给数组赋值
energyLinePoints[index].x = index * 3 + 100;
energyLinePoints[index].y = Mathf.Sin(index * 0.1f) * 60 + Screen.height * 0.1f;
// 限制绘制范围,去除与之连接的那条线
energyLine.minDrawIndex = index - 1;
energyLine.maxDrawIndex = index;
// 绘制
energyLine.Draw();
// 注释掉无用代码
// CreteLine(new Vector2(index * 3 + 100, Screen.height * 0.1f), new Vector2(energyLinePoints[index].x, energyLinePoints[index].y));
index++;
}
}
/// <summary>
/// 绘制线段
/// </summary>
/// <param name="startVector">线段起始点</param>
/// <param name="endVector">线段结束点</param>
private void CreteLine(Vector2 startVector, Vector2 endVector)
{
Vector2[] linePoints = { startVector, endVector };
VectorLine line = new VectorLine("Line", linePoints, myMaterial, 3.0f, LineType.Continuous, Joins.Weld);
line.Draw();
}
/// <summary>
/// 绘制矩形
/// </summary>
/// <param name="posX">矩形左上角X坐标</param>
/// <param name="posY">矩形左上角Y坐标</param>
/// <param name="width">矩形宽度</param>
/// <param name="height">矩形高度</param>
/// <param name="color">矩形颜色</param>
private void CreateRect(float posX, float posY, float width, float height, Color color)
{
VectorLine squareLine = new VectorLine("Square", new Vector2[8], myMaterial, 3.0f, LineType.Discrete, Joins.Weld);
squareLine.MakeRect(new Rect(posX, posY, width, height));
squareLine.SetColor(color);
squareLine.Draw();
}
}
代码解释
变量声明
myMaterial:用于绘制线条的材质。energyLine:用于绘制动态线条的VectorLine对象。energyLinePoints:存储动态线条点的数组。index:用于控制动态线条的绘制进度。
Start方法
- 调用
CreteLine方法绘制X轴和Y轴的水平线。 - 初始化
energyLinePoints数组,并创建energyLine对象。 - 调用
CreateRect方法绘制多个矩形。 - 创建并绘制圆形。
LateUpdate方法
- 动态更新
energyLinePoints数组中的点。 - 设置
energyLine的绘制范围。 - 调用
Draw方法绘制动态线条。
CreteLine方法
- 根据传入的起始点和结束点创建线段,并绘制该线段。
CreateRect方法
- 根据传入的矩形位置、大小和颜色创建矩形,并绘制该矩形。
通过以上代码和解释,你可以使用Vectrosity插件在Unity中绘制矩形和圆形,并实现动态线条的绘制。