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更改顏色。之後你只需要使用你自己的。
你說的「網格」是什麼類型的對象?你的意思是'GameObject'是哪個孩子的另一個'GameObject'或者你在談論'UnityEngine.Mesh'對象?你能給一個示例對象層次結構嗎?據我所知,你基本上需要一個具有「網格」數量長度的UnityEngine.Color []'字段的腳本,然後根據該顏色爲每個網格着色(通過Shader?'material.color' ?) –
我的意思是,我將有一個有多個子對象的gameobject。我想將這些子對象放到一個數組中,而不是爲那個數組中的每個元素,我會得到一個帶有顏色的新數組。這些顏色正在爲網格物體槽着色。所以,是的,就像你說的我猜。 – Jenny