- Home /
Changing GUI texture colour on mouse up
Hi I need help with changing a Gui textures colour from white to gold.
The 4 GUI textures are acting as boxes and buttons for a 2D ship selection screen.
When I tap on 1 of the 4 boxes I would like the appropriately pressed box to turn yellow to signal that is the current selected ship which will load into the game.
My problem is I don't know how to change the colour depending if its been pressed, and also I am confused about how to only have one texture change colour, so at no point can we have more than 1 highlighted/gold box.
The gui textures have box colliers on them.
Here is my code so far for the ship selection its self
 #pragma strict
 //this is the currently selected Player. Also the one that will be saved to PlayerPrefs
 var selectedPlayer : int = 0;
 
 function Update() 
 { 
 if (Input.GetMouseButtonUp (0)) {
     var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
     var hit : RaycastHit;
     
     if (Physics.Raycast (ray, hit, 100))
         {
                 // The pink text is where you would put the name of the object you want to click on (has attached collider).
                 
                 if(hit.collider.name == "ShipBox1") 
                 SelectedCharacter1(); //Sends this click down to a function called "SelectedCharacter1(). Which is where all of our stuff happens.
             
                 if(hit.collider.name == "ShipBox2")
                 SelectedCharacter2();
                     
                 if(hit.collider.name == "ShipBox3")
                 SelectedCharacter3();
                 
                 //if(hit.collider.name == "ShipBox4")
                 //SelectedCharacter4();
         } 
         else
         {
         return;               
         }
     } 
 }
 
 function SelectedCharacter1() {
     Debug.Log ("Character 1 SELECTED"); //Print out in the Unity console which character was selected.
     selectedPlayer = 1;
     PlayerPrefs.SetInt("selectedPlayer", (selectedPlayer));
 }
 
 function SelectedCharacter2() {
     Debug.Log ("Character 2 SELECTED");
     selectedPlayer = 2;
     PlayerPrefs.SetInt("selectedPlayer", (selectedPlayer));
 }
 
 function SelectedCharacter3() {
     Debug.Log ("Character 3 SELECTED");
     selectedPlayer = 3;
     PlayerPrefs.SetInt("selectedPlayer", (selectedPlayer));
     
     //}
     
     //function SelectedCharacter4() {
     //Debug.Log ("Character 4 SELECTED");
     //selectedPlayer = 4;
     //PlayerPrefs.SetInt("selectedPlayer", (selectedPlayer));
 }
If you want to change a texture dynamically across uniquely across multiple objects they each need to have their own texture. That way changing one won't change them all. Also, to deter$$anonymous$$e what color to set could be if or switch statements, or using System.Actions mapped to objects.
Your answer
 
 
             Follow this Question
Related Questions
Accidentally highlighting all objects in scene? 1 Answer
How can i enable this ? 1 Answer
Syntax is not highlighted. Plz help.I am new to unity 1 Answer
press a key, timing sequence? 0 Answers
Static Batching issue in ver 5.4.1 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                