• 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
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

People who like this

0 Show 0
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

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
Neutrinora

People who like this

1 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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

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

Pixel perfect UI text/canvas point filtering 0 Answers

UI Text Get Canvas' Axis Line 0 Answers

Text gets hidden on frames where other text is behind it 1 Answer

stopping an ui element from moving if the y axis value is too low 0 Answers

How to add total quantity of a score after the changing score Int? 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