Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by mattmanj17 · Jul 22, 2013 at 06:52 AM · guieditorbuttonmobile

GUI.Button works in editor but not on Mobile device

the following is a simplification of a problem I ran into during a project, and could not figure out. I opened a new project and reproduced the problem in an empty scene, so i know it is not a problem caused by any of my other code.

there is a script which draws a button in the corner of the screen. if this button is pressed, it will set the public boolean "pressed" to true, and will set it false other wise. this script is attached to an empty game object in the scene

using UnityEngine; using System.Collections;

 public class testButton : MonoBehaviour {
     public bool pressed;
     
     void OnGUI(){
         if(GUI.Button(new Rect(0,0,400,400),"test")){
             pressed=true;
         }
         else{
             pressed=false;
         }
     }
 }

on another game object is attached this script

using UnityEngine; using System.Collections;

 public class testscript : MonoBehaviour {
 
     public GameObject testObject;
     testButton button;
     
     void Start(){
         button=testObject.GetComponent<testButton>();
     }
 
     void Update () {
         if (button.pressed){
             Handheld.Vibrate();
         }
     }
 }

testObject is the gameobject in the scene which the testButton script is attached to, assigned in the editor. this script simply checks if the member variable pressed is true, and calls handheld.vibrate().

this scene runs as expected in the editor, but when i build and run in on my mobile device (a Droid DNA), the phone does not vibrate when the button is pressed.

if the call to handheld.vibrate() is placed within the if statement inside OnGUI() in testButton, the button responds. I am at a loss.

P.S. this is my first question asked on these forums, so please excuse any inelegance or ignorance of protocol. i only ask this question because i couldn't figure it out and could not find an answer anywhere.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Bunny83 · Jul 22, 2013 at 06:59 AM

OnGUI is called multiple times per frame. It is actually THE event handling routine In Unity. GUI.Button will only return true during the mouse up event. If you want to use the event in another script, don't reset the variable in OnGUI. Just set it to true, you can reset it in your other script.

Another way would be to use a delegate to which the other script can subscribe itself. Sorry but I can't provide sample code at the moment because I'm writing on my tablet :)

BTW: things like that can easily be tested by putting some Debug.Logs in your code.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

16 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Add EditorUI elements when a button is pressed 0 Answers

GUILayout.Button jitters on Application.Quit (mobile) 0 Answers

Drag and Drop button on Mobile (Messenger style) 0 Answers

UI Button and Color Tint Transition issue 0 Answers

Why this simple code doesnt work? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges