- Home /
gui elements to clo
hello there,
i have a scene which contains 6 different game objects. to these game objects i attached a popup js. so when i click on each object which has its own js file, it shows a popup. what i need is to cancel or close popups when i click on one of the other 5 game objects. here is the code i use for each game objects:
var newSkin : GUISkin;
var wasClicked: boolean = false;
var someText = "Close";
function OnMouseUp() {
wasClicked = true; // turns on button.
}
function OnGUI() {
GUI.skin = newSkin;
if (wasClicked) {
GUI.BeginGroup (Rect (Screen.width / 2 - -192, 140, 280, 150));
GUI.Box(Rect(0,0,128,115),"GameObject:");
GUI.Box(Rect(0,20,128,60), "Explanation about game object");
if (GUI.Button(new Rect(24,85,80,22), someText)) {
// do other stuff when button clicked.
wasClicked = false; // turns off button.
}
GUI.EndGroup ();
}
}
i hope there is solution for this. Thank you guys in advance...
Answer by robertbu · Feb 13, 2014 at 04:48 PM
Here is one solution. You need to replace 'ThisScriptName' by whatever you are naming the script above. 'static' variables are shared by all instances of the class. So this code sets the 'clicked' variable to the last instance that was clicked on. The GUI code compares 'clicked' against the instance to see if it should display anything. I don't know where you are going with this code, but setting 'clicked' back to null will bring down all the GUI displays.
#pragma strict
var newSkin : GUISkin;
var someText = "Close";
static var clicked : ThisScriptName = null;
function OnMouseUp() {
clicked = this;
}
function OnGUI() {
GUI.skin = newSkin;
if (clicked == this) {
GUI.BeginGroup (Rect (Screen.width / 2 - -192, 140, 280, 150));
GUI.Box(Rect(0,0,128,115),"GameObject:");
GUI.Box(Rect(0,20,128,60), "Explanation about game object");
if (GUI.Button(new Rect(24,85,80,22), someText)) {
// do other stuff when button clicked.
clicked = null; // turns off button.
}
GUI.EndGroup ();
}
}
Thanks Robert, your answer directed me to the direction i wanted to go. i added some lines to your code and came up with this, which is working perfectly for me...
Thanks Robert, your answer directed me to the direction i wanted to go.
i added some lines to your code and came up with this, which is working perfectly for me...
var newSkin : GUISkin;
var someText = "Close";
var isim = "Text";
var info = "info";
static var clicked : popups = null;
function On$$anonymous$$ouseUp() {
clicked = this;
}
function OnGUI() {
GUI.skin = newSkin;
if (clicked == this) {
GUI.BeginGroup (Rect (Screen.width / 2 - -192, 140, 280, 150));
GUI.Box(Rect(0,0,128,115),isim);
GUI.Label(Rect(5,20,118,60), info);
if (GUI.Button(new Rect(24,85,80,22), someText)) {
// do other stuff when button clicked.
clicked = null; // turns off button.
}
GUI.EndGroup ();
}
}
thanks a million again :)
thanks a million again :)
Your answer
Follow this Question
Related Questions
Timer With GUI 0 Answers
GUI follow gameobject 2 Answers
GUI help || Information 1 Answer
GUI clean last frame 1 Answer
Looking to map a GUI to a persons hand 0 Answers