您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

50 行
1.3 KiB

using UnityEngine;
[ExecuteInEditMode]
public class ArrayDrawer : MonoBehaviour
{
[Space]
public int columns = 10;
public float interval = 1;
public float cellSize = 0.1f;
[Space]
[ColorUsage(false, true)]
public Color color1 = Color.green;
[ColorUsage(false, true)]
public Color color2 = Color.red;
public Mesh mesh;
public Material material;
MaterialPropertyBlock _props;
void Update()
{
if (_props == null)
_props = new MaterialPropertyBlock();
var origin = transform.position + new Vector3(
interval * columns * -0.5f,
interval * columns * -0.5f, 0f
);
var rotation = transform.rotation;
var scale = Vector3.one * cellSize;
for (int y = 0; y <= columns; y++)
{
for (int x = 0; x <= columns; x++)
{
var position = origin + new Vector3(x, y, 0f) * interval;
var matrix = Matrix4x4.TRS(position, rotation, scale);
var c1 = color1 * ((float)x / columns);
var c2 = color2 * ((float)y / columns);
_props.SetColor("_EmissionColor", c1 + c2);
Graphics.DrawMesh(mesh, matrix, material, 0, null, 0, _props);
}
}
}
}