- Home /
change button texture from different button press
What I want to do is have a set of buttons that determine what textures could be used, when a user presses this button it will trigger which texture will be used. Then the user can press a different button and it will change the texture of that button to the texture that was select previously from the group of texture buttons.
How do I get it to where the second button will have its texture changed when it is pressed? Please help, below I have my code for both scripts I am using.. Thanks again!
static var materials : Material[];
static var textureButton : Texture;
var brickTexture : Texture;
var stoneTexture : Texture;
var glassTexture : Texture;
var DryWallTexture : Texture;
private var isGlass : boolean = false;
private var isStone : boolean = false;
private var isBrick : boolean = false;
private var isDryWall : boolean = false;
//Dimensions for the different windows in the UI
private var drawingWindow :Rect = Rect(Screen.width/2 - 800,Screen.height/2-400,1000,680);
private var materialsWindow :Rect = Rect(Screen.width/2 + 200,Screen.height/2-400,400,340);
//Dimensions for the Materials UI
private var glassOptionButton : Rect = Rect(10,20, 50,50);
private var stoneOptionButton : Rect = Rect(65,20, 50,50);
private var brickOptionButton : Rect = Rect(10,72, 50,50);
private var paintedDrywallOptionButton : Rect = Rect(65,72, 50,50);
private var copperOptionButton : Rect = Rect(10,125,50,50);
function OnGUI()
{
GUI.Window(1,materialsWindow, materialsWindowFunc, "Material Window");
}
function materialsWindowFunc(windowID: int)
{
if(GUI.Button(glassOptionButton, "GL"))
{
isGlass = true;
if(isGlass == true)
{
isStone = false;
isBrick = false;
isDryWall = false;
//textureButton = materials[2];
textureButton = glassTexture;
}
Debug.Log(textureButton + " This Will be glass");
}
if(GUI.Button(stoneOptionButton, "STO"))
{
isStone = true;
if(isStone == true)
{
isGlass = false;
isBrick = false;
isDryWall = false;
//textureButton = materials[5];
textureButton = stoneTexture;
}
Debug.Log(textureButton + "This will be stone");
}
if(GUI.Button(brickOptionButton, "BR"))
{
isBrick = true;
if(isBrick == true)
{
isGlass = false;
isStone = false;
isDryWall = false;
//textureButton = materials[0];
textureButton = brickTexture;
}
Debug.Log(textureButton + "This will be Brick");
}
if(GUI.Button(paintedDrywallOptionButton, "PDW"))
{
isDryWall = true;
if(isDryWall == true)
{
isGlass = false;
isStone = false;
isBrick = false;
//textureButton = materials[3];
textureButton = DryWallTexture;
}
Debug.Log(textureButton + "This will be Drywall");
}
}
Script 2
import changeMaterials;
private var changeButton : Rect = Rect(10,125,50,50);
function OnGUI()
{
if(GUI.Button(changeButton, textureButton))
{
Debug.Log(textureButton);
}
}
Answer by Sundar · Aug 02, 2012 at 09:57 PM
Have two variables
Textrue selectedTexture;
bool aTextureSelected = false;
in your first set of buttons, when selected assign
selectedTexture = DryWallTexture;// repeat inside all buttons appropriately
aTextureSelected = true;
then in your script 2
function OnGUI()
{
if( aTextureSelected )
{
textureButton = selectedTexture;
aTextureSelected = false;
}
if(GUI.Button(changeButton, textureButton))
{
Debug.Log(textureButton);
}
}
Does not work it seems, the second button is still having the texture changed off the first button press ins$$anonymous$$d of its own action.