在编写几何着色器的时候发现默认的Plane无法满足需求,并且顶点顺序未知,于是便写了一个网格生成代码,便于生成指定大小的Plane,且顶点顺序可控。
效果如下:
一个单元格由4个顶点,两个三角面组成。
四个顶点如下图
则生成面的顶点顺序为:
- 左上三角形:0 -> 1 -> 2
右下三角形:2 -> 3 -> 0
Unity中顺时针绘制为正面,逆时针绘制为反面。
实现脚本如下:
//PlaneBuilder.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#region Editor
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor(typeof(PlaneBuilder))]
public class PlaneBuilderEditor : Editor
{
public override void OnInspectorGUI()
{
PlaneBuilder builder = (PlaneBuilder)target;
EditorGUI.BeginChangeCheck();
base.OnInspectorGUI();
if (EditorGUI.EndChangeCheck())
{
builder.UpdateMesh();
}
if (GUILayout.Button("更新网格"))
{
builder.UpdateMesh();
}
}
}
#endif
#endregion Editor