Inspector中的Unity3d排序2D阵列

时间:2016-01-08 15:32:37

标签: c# arrays unity3d

我有一个对象,例如5个网格,我想在运行时更改颜色。但是每个网格都有不同的颜色可以改变。例如,网格1可以更改为蓝色,红色和橙色,网格2可以更改为橙色,黄色,绿色,紫色和白色。

我想有一个c#脚本,我有一个包含所有5个网格的数组。对于每个数组,我希望在检查器中显示另一个数组,我可以在其中放入不同的颜色。 如果网格数总是为5,这没有问题。但我希望它具有灵活性。例如,另一个对象只有3个网格,而我只需要3个颜色数组而不是5个。

我从未使用过Editor Scripts,但也许有一个简单的解决方法吗?

我正在使用Unity 5.3

谢谢。

1 个答案:

答案 0 :(得分:0)

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有一些默认的物体,如球体和立方体)。然后创建一些基本的颜色材料,并将它们添加到每个对象的材质数组中。

然后你可以运行并按空格键改变网格,按A改变颜色。你只需要在那之后使用自己的。

相关问题