Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 svendkiloo · Jun 06, 2016 at 08:36 AM · uitextcanvasrecttransform

Snap UI Text inside canvas

Occasionally, when the user touches the screen, I want to show a message just above the point they touch (so that it's not hidden by their finger). I can get the position on screen easily enough, and it's straightforward to just call text.rectTransform.position = position where text is a UnityEngine.UI.Text object and position is the position they touched (plus some value), and this work fine. However when the position is close to the edges of the screen, part of the Text is outside the canvas.

I'd like to somehow snap the Text to a position so that it will always be fully visible. I've tried testing the width of the Text element with the position and the screen width, but it seems that when the screen size changes, the width of the Text is always given in "reference pixels", while the width of the screen scales. This would make that calculation very complicated.

Does anyone know if there's a better way to make the check and adjustment, to ensure that the text is always fully visible?

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
1

Answer by Maurice_B · Jun 06, 2016 at 08:48 AM

If you can work out the size of the text you can do : here we have called them textwidth and textheight

 int x = Mathf.Clamp(Text.rectTransform.position.x,-screen.width/2 + textwidth/2,screen.width/2 -textwidth/2))
 int y = Mathf.Clamp(Text.rectTransform.position.y,-screen.height/2 + textheight/2,screen.height/2 -textheight/2))
 
     Text.rectTransform.position = new Vector2(x,y)

hope that gives you an idea.

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 svendkiloo · Jun 06, 2016 at 12:17 PM 0
Share

I've tried something very similar to that, but the problem is that Screen.width changes to the actual pixels of the screen (matching the actual screen resolution), where as the text heights (`text.rectTransform.sizeDelta.x/y`). Of course if I could find the text width and height in actual pixels, this would work :)

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

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

Related Questions

How to attach a canvas to a game object properly? 1 Answer

Canvas UI Priority layers 1 Answer

How do I get more freedom with positioning UI Text? 1 Answer

UI Text Component being reset on player when built 0 Answers

Quick Question on UI Text Alignment 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