I want to switch a game object's material back to its original after its been altered?!?!?!
In my game, when an object is selected, it applies the diffuse shader to the object which then highlights it.
When the object is clicked again when it has been highlighted, I want the highlighting shader to be turned off and the original material to be applied.
else if (hit.collider.tag == "Object" && lastClicked != null && taptaptapSelect.enabled == true) {
//Debug.Log ("This hit at " + hit.transform.name);
print (clickedGameObject.gameObject.name);
// print ("tapTime");
//clickedGameObject.gameObject.active = false;
rend = clickedGameObject.GetComponent<Renderer> ();
rend.material = diffuseShader;
}
How can I capture the original material of a game object?
Answer by phxvyper · Apr 01, 2016 at 12:40 AM
Have a non-local member public Material originalMaterial;
that saves the original material. Then assign the material later by rend.material = originalMaterial;
I have a bunch of objects in the scene that when selected, have their "highlighter" shader applied.
How can I discover the original material for each object when they are initially selected?
Here is my working object select script:
if (Input.Get$$anonymous$$ouseButtonDown(0))
{
//Send raycast to hit a game object
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
text.text = question;
// Casts the ray and get the first game object hit
if (Physics.Raycast (ray, out hit, $$anonymous$$athf.Infinity, layerToHit)) {
lastClicked = hit.collider.gameObject.transform;
clickedGameObject = hit.collider.gameObject;
tapLastClicked = hit.collider.gameObject.transform;
if (hit.collider.tag == "Object" && lastClicked != null && spawned == false && sessionCounter == 0 && taptaptapSelect.enabled == false) {
//Debug.Log ("This hit at " + hit.transform.name);
print (lastClicked.name);
objectSelect.enabled = true;
Your answer
