How to modify RectTransform properties in script [Unity 4.6 beta]

后端 未结 7 919
面向向阳花
面向向阳花 2020-12-24 15:03

\"enter

Hello, I\'m using the new UI system from Unity 4.6 beta...

Tried diffe

7条回答
  •  温柔的废话
    2020-12-24 15:33

    One day researching. I found an extension that can help us to deal with new UI system. u can improve this extension if you want.

    public static class RectTransformExtensions
    {
        public static void SetDefaultScale(this RectTransform trans) {
            trans.localScale = new Vector3(1, 1, 1);
        }
        public static void SetPivotAndAnchors(this RectTransform trans, Vector2 aVec) {
            trans.pivot = aVec;
            trans.anchorMin = aVec;
            trans.anchorMax = aVec;
        }
    
        public static Vector2 GetSize(this RectTransform trans) {
            return trans.rect.size;
        }
        public static float GetWidth(this RectTransform trans) {
            return trans.rect.width;
        }
        public static float GetHeight(this RectTransform trans) {
            return trans.rect.height;
        }
    
        public static void SetPositionOfPivot(this RectTransform trans, Vector2 newPos) {
            trans.localPosition = new Vector3(newPos.x, newPos.y, trans.localPosition.z);
        }
    
        public static void SetLeftBottomPosition(this RectTransform trans, Vector2 newPos) {
            trans.localPosition = new Vector3(newPos.x + (trans.pivot.x * trans.rect.width), newPos.y + (trans.pivot.y * trans.rect.height), trans.localPosition.z);
        }
        public static void SetLeftTopPosition(this RectTransform trans, Vector2 newPos) {
            trans.localPosition = new Vector3(newPos.x + (trans.pivot.x * trans.rect.width), newPos.y - ((1f - trans.pivot.y) * trans.rect.height), trans.localPosition.z);
        }
        public static void SetRightBottomPosition(this RectTransform trans, Vector2 newPos) {
            trans.localPosition = new Vector3(newPos.x - ((1f - trans.pivot.x) * trans.rect.width), newPos.y + (trans.pivot.y * trans.rect.height), trans.localPosition.z);
        }
        public static void SetRightTopPosition(this RectTransform trans, Vector2 newPos) {
            trans.localPosition = new Vector3(newPos.x - ((1f - trans.pivot.x) * trans.rect.width), newPos.y - ((1f - trans.pivot.y) * trans.rect.height), trans.localPosition.z);
        }
    
        public static void SetSize(this RectTransform trans, Vector2 newSize) {
            Vector2 oldSize = trans.rect.size;
            Vector2 deltaSize = newSize - oldSize;
            trans.offsetMin = trans.offsetMin - new Vector2(deltaSize.x * trans.pivot.x, deltaSize.y * trans.pivot.y);
            trans.offsetMax = trans.offsetMax + new Vector2(deltaSize.x * (1f - trans.pivot.x), deltaSize.y * (1f - trans.pivot.y));
        }
        public static void SetWidth(this RectTransform trans, float newSize) {
            SetSize(trans, new Vector2(newSize, trans.rect.size.y));
        }
        public static void SetHeight(this RectTransform trans, float newSize) {
            SetSize(trans, new Vector2(trans.rect.size.x, newSize));
        }
    }
    

    The source code I found from here: http://orbcreation.com

提交回复
热议问题