Inspector中二维数组的Unity3d排序
本文关键字:Unity3d 排序 二维数组 Inspector | 更新日期: 2023-09-27 18:29:29
我有一个对象,例如有5个网格,我想在运行时更改颜色。但每个网格都有不同的颜色可供更改。例如,网格1可以变为蓝色、红色和橙色,网格2可以变为橙色、黄色、绿色、紫色和白色。
我想要一个c#脚本,其中我有一个包含所有5个网格的数组。对于每个数组,我希望在检查器中出现另一个数组,在那里我可以放入不同的颜色。如果网格数始终为5,则这是没有问题的。但我希望它是灵活的。例如,另一个对象只有3个网格,而我只需要3个颜色阵列而不是5个。
我从未使用过编辑器脚本,但也许有一个简单的解决方法?
我正在使用Unity 5.3
谢谢。
public class Test: MonoBehaviour
{
public Models [] models;
private int index = 0;
[SerializeField] private MeshFilter meshFilter = null;
[SerializeField] private Renderer rend = null;
void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
if(++index == models.Length)index = 0;
meshFilter.mesh = models[index].mesh;
int currIndex = models[index].currentIndex;
rend.material = models[index].materials[currIndex];
}
if(Input.GetKeyDown(KeyCode.A))
{
if(++models[index].currentIndex == models[index].materials.Length)models[index].currentIndex = 0;
int currIndex = models[index].currentIndex;
rend.material = models[index].materials[currIndex];
}
}
}
[System.Serializable]
public class Models{
public Mesh mesh;
public int currentIndex;
public Material[]materials;
}
这将在您的检查器中显示Models数组。你可以给它一个尺寸,然后每个元素都会打开一个网格槽和一组材料。给它一个大小,你就可以开始拖动材质了。
我建议在数组中添加2个项目,然后添加两个网格(Unity有一些默认的网格,如球体和立方体)。然后创建一些颜色的基本材质,并将它们添加到每个对象的材质阵列中。
然后可以运行并按Space更改网格,按A更改颜色。之后你只需要使用你自己的。