0

Material実行時に壁のを変更しようとしています。家のモデルをGoogleSketchupからインポートします。これは、さまざまなマテリアルがすべて1つのオブジェクトに含まれています(これはインスペクターに表示されます)。次のボタン(>>)をクリックするたびに、オブジェクトの最初のマテリアルが変更されます。他の要素への参照を取得するにはどうすればよいですか?これは私がこれまでに持っているものです:

public class Material_GUI : MonoBehaviour {

public Material[] mats;
public GameObject go;
private int index = 0;

// Use this for initialization
void Start () {
    go.renderer.material= mats[index];
}

// Update is called once per frame
void Update () {
}

void OnGUI(){
    GUILayout.BeginArea(new Rect(Screen.width/2-100,Screen.height-60,200,50));
    GUI.Box (new Rect(10,10,190,40),"");

    GUI.Label(new Rect(62,20,100,20),"Wall Testing"+(index +1));

    if(GUI.Button (new Rect(15,15,30,30),"<<")){
        index--;
        if(index<0){
            index = mats.Length - 1;

        }
        go.renderer.material = mats[index];
    }

    if(GUI.Button (new Rect(165,15,30,30),">>")){
        index++;
        if(index > mats.Length -1){
            index = 0;

        }
        go.renderer.material = mats[index];
    }
    GUILayout.EndArea();
}
}
4

1 に答える 1

0

レンダラーの他のマテリアルを変更したい場合は、使用できます

go.renderer.materials

http://docs.unity3d.com/Documentation/ScriptReference/Renderer-materials.html?from=MeshRenderer

例えば:

go.renderer.materials[0] = mats[0];
go.renderer.materials[1] = mats[1];
于 2012-12-13T11:40:15.023 に答える