首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查器中二维数组的Unity3d排序

检查器中二维数组的Unity3d排序
EN

Stack Overflow用户
提问于 2016-01-08 15:32:37
回答 1查看 1.6K关注 0票数 3

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

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

我从来没有与编辑脚本,但也许有一个简单的解决办法?

我和Unity5.3一起工作

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-08 21:23:47

代码语言:javascript
复制
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;
}

这将在您的检查器中显示模型数组。你可以给它一个大小,然后每个元素打开一个网格槽和一个材料阵列。给它一个大小,你就可以开始拖曳材料。

我建议在数组中添加两个条目,然后添加两个网格(Unity有一些默认的网格,如球形和多维数据集)。然后创建一些基本的颜色材料,并将它们添加到每个对象的材料数组中。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34680566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档