- Home /
Video Tutorial - Dynamically Changing material on multiple objects
Dynamically Changing material on object - http://www.youtube.com/watch?v=-w2pZ-d4oug
This is a great video, thank you to the creator. But i was wondering if anyone can help with changing the material for multiple objects?
Code is below - which works for 1 object - name "ga" - you drag the object into the Inspector and it works brilliantly - but it does not work for Groups - i can control 1 child in a group by using ga = GameObject.Find("Cube1/Cube2") - but cannot make control everything! Please help!!! I've wasted 6 days of my life trying little things!
using UnityEngine; using System.Collections;
public class SceneGUI : MonoBehaviour { public Material[] mats; public GameObject ga; private int index = 0;
void Start () {
//ga = GameObject.FindWithTag("Cube1");
ga.renderer.material = mats[index];
}
public void OnGUI() {
GUILayout.BeginArea(new Rect(Screen.width / 2 - 100, Screen.height - 60, 200, 50));
GUI.Box(new Rect(10, 10, 1190, 40),"");
GUI.Label(new Rect(62, 20, 100, 20), "Texture " + (index + 1));
if(GUI.Button(new Rect(15, 15, 30, 30), "<<")){
index--;
if(index < 0) {
index = mats.Length - 1;
}
ga.renderer.material = mats[index];
}
if(GUI.Button(new Rect(165, 15, 30, 30), ">>")){
index++;
if(index > mats.Length - 1) {
index = 0;
}
ga.renderer.material = mats[index];
}
GUILayout.EndArea();
}
}
Answer by wintermuteai1 · Feb 21, 2015 at 07:00 PM
Here is what I did: assign more gameobjects Like this: Sloppy way to do it but it works for what I needed for face and hands of a character. using UnityEngine; using System.Collections;
public class GUIscene : MonoBehaviour {
public Material[] mats;
public GameObject ga;
public GameObject ga2;
public GameObject ga3;
private int index = 0;
// Use this for initialization
void Start () {
ga.renderer.material = mats [index];
}
// Update is called once per frame
public 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), "Skin" + (index + 1));
if (GUI.Button(new Rect(15, 15, 30,30), "<<")){
index--;
if(index < 0){
index = mats.Length - 1;
}
ga.renderer.material = mats[index];
ga2.renderer.material = mats[index];
ga3.renderer.material = mats[index];
}
if (GUI.Button(new Rect(165, 15, 30,30), ">>")){
index++;
if(index > mats.Length - 1){
index = 0;
}
ga.renderer.material = mats[index];
ga2.renderer.material = mats[index];
ga3.renderer.material = mats[index];
}
GUILayout.EndArea();
}
}
Your answer

Follow this Question
Related Questions
Make a simple tree 1 Answer
How to detect child object collisions on parent 3 Answers
Instantiating as a child error 1 Answer
How do I allocate a parent to a gameobject that just got instantiated? 2 Answers
Rotate children around parent pivot 0 Answers