- Home /
Sprite-button being pressed when not even pointed
I've made sprite-button with OnMouseUpAsButton() and all that stuff that calls method on menu object that draws menu with OnGUI() methods. And it works Ok except one problem: when I press GUI-button that closes menu (sets "opened" flag to false stopping menu drawing) the sprite-button is being pressed again opening it. I've checked everything: I'm absolutely sure that sprite-button's OnMouseUpAsButton() is being called again even it is not pressed. Any ideas?
Ok, here are some strings:
     public class StoreButton : MonoBehaviour {
         void OnMouseUpAsButton()
         {
             GameObject.Find ("Shop").SendMessage("Open", gameObject);
         }
     }
And that's a part of menu code:
             public class Shop : MonoBehaviour {
                 private bool opened = false;
     
                 void OnGUI()
                 {
                     if (opened == true) {    
                                     GUI.Box (new Rect (x, y, 650, 650), "", "Box");
                                     toolbarInt = GUI.Toolbar (new Rect (x + 7, y + 12, 636, 41), toolbarInt, toolbarStrings, "button");
                                     switch (toolbarInt) {
                                         case 0: break;
                                         case 1: break;
                                         case 2: break;
                                         case 3: break;
                                     }
                                     if (GUI.Button (new Rect (x + 315, y + 557, 157, 66), "Продолжить", "continue"))
                                             Close ();
                                             
                             }
                 }
                 void Open(GameObject caller)
                 {
                     opened = true;
                 }
     
                 void Close()
                 {
                     opened = false;
                 }
         }
     
What part of your code calls On$$anonymous$$ouseUpAsButton? Also if there is only one Shop object in your scenes, why not cache the reference to it ins$$anonymous$$d of gameobject.find and sendmessage. Once you have the object, you can call Open directly on it through it's dot operator...
@Landern Ok, so let's start from the beginning...
There is a sprite with Collider2D that has this On$$anonymous$$ouseUpAsButton() code. It calls Open() method and it is insignificant how it makes it, but if you want I will make it other way.
I've tried to make prefab for this GUI menu object with fullscreen-collider, so the buttons under it can not me pressed. Did not worked. The button opening menu still being pressed as I close menu. Also I've noticed that sprite button sometimes is being pressed even if I click anywhere else on the GUI-menu.
Answer by incorrect · Jul 27, 2014 at 09:06 AM
So it is some sort of Unity bug with GUI. Using nGUI can help.
Your answer
 
 
             Follow this Question
Related Questions
Power Bar Collision 1 Answer
Detecting top most UI element using Collider2D 0 Answers
click on GUI button goes through to a collider... 0 Answers
[4.6 GUI] Displaying my pause menu when ESC is pressed 2 Answers
GUI 2D Bounding Box 1 Answer
