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 Zib Redlektab · Jan 29, 2011 at 07:41 PM · buttonguilayoutmouseover

MouseOver for multiple GUILayout.Buttons?

I'm trying to make a button wrapper class that easily allows for mouseover detection. I it working for regular GUI.Buttons, but now I'd like to make it compatible with GUILayout.Buttons, as well. The problem is that I don't have direct access to the Rect of a GUILayout.Button.

I understand that I can use GUILayoutUtility.GetLastRect to get the last drawn rectangle, but doesn't this mean that I can only do one button at a time? I don't understand how I would go about referencing the rects of multiple buttons this way.

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 yoyo · Jan 30, 2011 at 05:46 AM

You can use GetLastRect to find the area of a group of controls if the controls are wrapped in Begin/EndVertical or Begin/EndHorizontal, like so:

void OnGUI() { GUILayout.BeginVertical(); GUILayout.Button("First"); GUILayout.Button("Second"); GUILayout.Button("Third"); GUILayout.EndVertical();

 if(Event.current.type == EventType.Repaint && 
    GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition ))
 {
     GUILayout.Label( "Mouse over!" );
 }
 else
 {
     GUILayout.Label( "Mouse somewhere else" );
 }

}

Alternatively you could use GUILayout.BeginArea to confine the auto-layout to a fixed area of the screen that you control.

Comment
Add comment · Show 3 · 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
avatar image Zib Redlektab · Jan 30, 2011 at 05:21 PM 0
Share

When I do this, (see http://grab.by/8FAy for exact code), I get an error that says "Getting control 0's position in a group with only 0 controls when doing $$anonymous$$ouseDown". Any way around it, because it seems like this should be working. It's practically the same thing you showed me above.

avatar image Zib Redlektab · Jan 30, 2011 at 05:25 PM 0
Share

I suppose that CursorController.GetCurEffectiveCursorPos() could be the culprit, but that works everywhere else...It's a cursor manager, so we can lock the real cursor in place & make our own. Rect.Contains() works with it for a normal button, though...

avatar image yoyo · Jan 30, 2011 at 10:26 PM 0
Share

Hmm, I was getting that error with very similar code, but it went away when I modelled my code on the sample code for GetLastRect. Try my code verbatim and then tweak from there.

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

No one has followed this question yet.

Related Questions

GUILayout.Buttons overlap but only can click the bottom one 0 Answers

GUI Button Text in upper left? 2 Answers

UI image with button component not tracking mouse correctly 1 Answer

How do you find the rect of a GUILayout item? 1 Answer

Hair and Skin Color Buttons 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