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 Good-old-Grim · May 08, 2014 at 01:29 PM · tooltip

Autosized GUI element in an arbitrary location

Basically what I want is an autosized tooltip. What I've got so far is GUILayout.Box() that creates an autosized box with text inside it, but places it in the top left corner.

The only way I see to move it, is by putting it inside a GUILayout.BeginArea() / GUILayout.EndArea() block, but the Area cannot be autosized - I have to specify a Rect which destroys the whole point.

I even tried specifying an unreasonably large Rect for the Area, but once the Box is inside an Area it stretches horizontally to however big the Area is.

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

2 Replies

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

Answer by robertbu · May 08, 2014 at 03:10 PM

Here is an example of using GUI (not GUILayout), to autosize a box. Both 'text' and 'pos' can be changed at runtime, and the box will resize and/or reposition.

 #pragma strict
 
 var pos = Vector2(100,100);
 var text = "Here is some text";
 
 private var _text = "";
 private var _pos = Vector3.zero;
 private var rect : Rect;
     
 function OnGUI() {
     if (_text != text || _pos != pos)
         Recalc();
 
     GUI.Box(rect, text);
 }
 
 function Recalc() {
     _text = text;
     _pos = pos;
     var size = GUI.skin.GetStyle("Box").CalcSize(new GUIContent(text));
     rect.x = pos.x;
     rect.y = pos.y;
     rect.width = size.x;
     rect.height = size.y;
 }
Comment
Add comment · Show 1 · 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 Good-old-Grim · May 09, 2014 at 07:56 AM 0
Share

CalcSize does the trick.

avatar image
1

Answer by gfallasc · May 08, 2014 at 03:34 PM

This is some confusing, but If you're using the GUILayout components, you should always wrap them into a parent or desired area. You could create a dynamic area (`Rect`) using the Screen.height and Screen.widthvalues, and then add components inside. You could use the orientation GUILayout.BegintHorizontal and GUILayout.EndHorizontal (there's also a Vertical block) and if you want to 'anchor' a component inside a box you could use the GUILayout.FlexibleSpace() method that will expand a blank space, according to the orientation, being relative if you add before/after the component, and if you want to the components don't expand you could use the GUILayout.ExpandWidth or GUILayout.ExpandHeight options, by default both are true: here's a example: GUILayout.Button("Button", GUILayout.ExpandWidth (false));

Hope it helps you.

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

21 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 avatar image avatar image avatar image avatar image avatar image

Related Questions

display hints while mouse is over a text field using tooltip 3 Answers

How to create a GUI button with tooltip and intercept the click event? 0 Answers

How would I make a tool-tip sized to text? (4.6 GUI) 2 Answers

Tooltips in Unity Editor 1 Answer

Displaying a tooltip with GUILayout.Window 1 Answer


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