- Home /
How to change the material of a gameobject when it is triggered?
I am working on a game which involves a game board like checkers, I have to add some functionality that basically changes the theme of the game board. The way I am trying to do it is to have separate materials for each theme, I have tried testing this by creating a script and adding to this game object that I want to change the material on. This script basically stores the materials in an array and the prefab I want to change then the script will get the renderer component to change the material, I have made it so this is triggered on a UI button in a different scene for the UI and it works within the unity editor but once the game has been built on a platform this method doesn't work. I need help on fix this bug or finding a new way to do this. This is my script below
using UnityEngine;
using System.Collections;
public class SwitchThemeSilver : MonoBehaviour {
public Material[] materials;
public GameObject[] prefab;
public void changeBlue () {
//0 in materials array is blue
Debug.Log ("blue");
prefab[0].GetComponent<Renderer>().sharedMaterial = materials[0];
}
public void changeRed () {
//1 in materials array is red
Debug.Log ("red");
prefab[0].GetComponent<Renderer>().sharedMaterial = materials[1];
}
public void changeGrey () {
//2 in materials array is grey
Debug.Log ("reset");
prefab[0].GetComponent<Renderer>().sharedMaterial = materials[2];
}
}
The game board will be default then you will go back to the menu scene and select a theme button to change the theme of the game board, once you go back into the game board view the material of the prefab will be changed to the one you selected, this is the effect I am going for but i need some help to figure this out.