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 hulahoolgames · Dec 28, 2017 at 11:19 AM · uirecttransformwidth

Incorrect RectTransform width value when trying to read child RectTransform width.

     public RectTransform cellContainer;
     
     private int m_numCells;
     private float m_leftScrollLimit;
     private float m_rightScrollLimit;
     private List<RectTransform> m_cellRects;
     private HorizontalLayoutGroup m_horizontalLayoutGroup;
     
     void Awake()
         {
             m_cellRects = new List<RectTransform>();
             m_numCells = cellContainer.childCount;
             for(int i = 0; i < m_numCells; i++) {
                 RectTransform rect = (RectTransform)cellContainer.GetChild(i);
                 float w = rect.rect.width;
                 m_cellRects.Add((RectTransform)cellContainer.GetChild(i));
             }
             m_horizontalLayoutGroup = cellContainer.gameObject.GetComponent<HorizontalLayoutGroup>();
             Assert.AssertNotNull(m_horizontalLayoutGroup);
         }
     
         void Start() {
             float cellWidth = m_cellRects[0].rect.width;
             float canvasWidth = UIController.Instance.CanvasWidth;
             // Set the total width of the horizontal cell container
             float containerWidth = m_numCells * cellWidth + Mathf.Max(0, m_numCells - 1) * m_horizontalLayoutGroup.spacing + (UIController.Instance.CanvasWidth - cellWidth);
             cellContainer.sizeDelta = new Vector2(containerWidth, UIController.Instance.CanvasHeight);
             float leftAnchoredPosition = (containerWidth - UIController.Instance.CanvasWidth) * 0.5f;
             m_leftScrollLimit = leftAnchoredPosition + cellWidth * 0.5f;
             m_rightScrollLimit = -m_leftScrollLimit;
             ScrollToCurrent();
         }

I have the above script attached to a Scroll View. The cellContainer is the "Content" of the scroll view, which has a Horizontal Layout Group component. The content has child panels that can be scrolled horizontally. Each child panel has a Layout Element component and min width is set to 150. When I instantiate this UI gameobject for the first time the cellWidth in the Start function reads 150 correctly. But when I instantiate this UI screen later when needed, the cellWidth value is 0 and not 150 which makes the rest of the calculation wrong. I can't figure out why the first time the right value is reflected but not later. Do let me know if you have any idea about this. Thank you!

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

0 Replies

· Add your reply
  • Sort: 

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

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

Getting the width of UI text inside a layout allways 0. 1 Answer

Resizing UI Image but with minimum width 2 Answers

RectTransform outline and position aren't synced 0 Answers

Moving RectTransform over another RectTransform under GridLayout 0 Answers

How do I layout dynamically instantiated UGUI components? 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