1 using UnityEngine; 2 using System.Collections; 3 using UnityEngine.UI; 4 5 public class X_RectAutoSize : MonoBehaviour 6 { 7 //原始尺寸 8 private Vector2 olSize; 9 //缩放后的尺寸 10 private Vector2 size; 11 //原始尺寸宽高比 12 private float al; 13 private RectTransform self; 14 public bool lockHeight; 15 public bool lockPos= true; 16 internal float parentHeight; 17 public float heightBoder; 18 19 void Update() 20 { 21 self = GetComponent<RectTransform>(); 22 if (!lockHeight) 23 { 24 parentHeight = self.parent.GetComponent<RectTransform>().rect.size.y - heightBoder; 25 } 26 self.GetComponent<Image>().SetNativeSize(); 27 olSize = self.sizeDelta; 28 al = olSize.x / olSize.y; 29 size = new Vector2(parentHeight * al, parentHeight); 30 self.sizeDelta = size; 31 if (lockPos) 32 { 33 self.anchoredPosition = Vector2.zero; 34 } 35 } 36 }