- 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