Video Tutorial - Dynamically Changing material on multiple objects

Dynamically Changing material on object -

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();
}

}

1 Answer

1

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();
}
}