Unity3d Unity 3d-用于渲染的材质选择
我试图在运行时更改墙的Unity3d Unity 3d-用于渲染的材质选择,unity3d,textures,materialized-views,Unity3d,Textures,Materialized Views,我试图在运行时更改墙的材质。我从Google Sketchup导入房屋模型,它在一个对象中包含不同的材质(如inspector所示)。每当我单击“下一步”按钮(),它都会更改对象的第一个材质。如何获取对其他元素的引用?这就是我到目前为止所做的: public class Material_GUI : MonoBehaviour { public Material[] mats; public GameObject go; private int index = 0; // Use this
材质。我从Google Sketchup导入房屋模型,它在一个对象中包含不同的材质(如inspector所示)。每当我单击“下一步”按钮(
),它都会更改对象的第一个材质。如何获取对其他元素的引用?这就是我到目前为止所做的:
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();
}
}
public-class-Material\u-GUI:monobhavior{
公共材料[]垫;
公共游戏对象go;
私有整数指数=0;
//用于初始化
无效开始(){
go.renderer.material=mats[index];
}
//每帧调用一次更新
无效更新(){
}
void OnGUI(){
Guillayout.BeginArea(新矩形(屏幕宽度/2-100,屏幕高度-60200,50));
GUI.Box(新矩形(10,10190,40)),;
GUI.标签(新Rect(62,20100,20),“壁测试”+(索引+1));
if(GUI.Button(新矩形(15,15,30,30),“”){
索引++;
如果(索引>垫长-1){
指数=0;
}
go.renderer.material=垫[索引];
}
GUILayout.EndArea();
}
}
如果要更改渲染器的其他材质,可以使用
go.renderer.materials
例如:
go.renderer.materials[0] = mats[0];
go.renderer.materials[1] = mats[1];