// Rect Transform will be resized on Start(). void Start() { RectTransform rect = this.GetComponent <RectTransform>(); if (rect != null) { rect.SetSizeWithCurrentAnchors( mainAxis, resizeUnits == Unit.Percentage ? GetPixelsForPercentage(mainAxis, size) : size ); if (limitCrossAxis) { RectTransform.Axis crossAxis = (mainAxis == RectTransform.Axis.Horizontal) ? RectTransform.Axis.Horizontal : RectTransform.Axis.Vertical; rect.SetSizeWithCurrentAnchors( crossAxis, crossAxisUnits == Unit.Percentage ? GetPixelsForPercentage(crossAxis, maxCrossSize) : maxCrossSize ); } } else { Debug.LogWarning("ResponsiveUI: GameObject with name " + gameObject.name + " has not a Rect Transform component, so it can't be resized"); } }
RectTransform.Axis GetAxis() { int horizontal = 0; int vertical = 0; int count = 0; foreach (PickerType picker in GetTargetPickers()) { RectTransform.Axis layout = picker.layout; if (layout == RectTransform.Axis.Horizontal) { ++horizontal; } if (layout == RectTransform.Axis.Vertical) { ++vertical; } ++count; } if (count == horizontal) { return(RectTransform.Axis.Horizontal); } if (count == vertical) { return(RectTransform.Axis.Vertical); } return((RectTransform.Axis)(-1)); }
public static UIAnchor GravityToAnchor(LayoutGravity gravity, RectTransform.Axis axis) { if (axis == RectTransform.Axis.Vertical) { switch (gravity) { case LayoutGravity.Top: return(UIAnchor.Top); case LayoutGravity.Bottom: return(UIAnchor.Bottom); case LayoutGravity.CenterVertical: case LayoutGravity.Center: return(UIAnchor.Center); } } else { switch (gravity) { case LayoutGravity.Start: return(UIAnchor.Left); case LayoutGravity.End: return(UIAnchor.Right); case LayoutGravity.CenterHorizontal: case LayoutGravity.Center: return(UIAnchor.Center); } } return(UIAnchor.None); }
public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); base.OnInspectorGUI(); if (EditorGUI.EndChangeCheck()) { Undo.RecordObjects(GetRecordTargets(), "picker changed"); foreach (PickerType picker in GetTargetPickers()) { picker.SyncItemList(true); } } RectTransform.Axis axis = GetAxis(); RectTransform.Axis newAxis = (RectTransform.Axis)EditorGUILayout.EnumPopup("Layout", axis); if (axis != newAxis) { Undo.RecordObjects(GetRecordTargets(), "picker changed"); foreach (PickerType picker in GetTargetPickers()) { picker.layout = newAxis; } } }
private static void SharkUI(CalcSize calcSize, ApplyValue applyValue, RectTransform.Axis axis) { var list = Utils.GetRectTransforms(); if (list.Count < 2) { return; } float size = 10000000f; Vector3[] corners = new Vector3[4]; for (var i = 0; i < list.Count; i++) { list[i].GetWorldCorners(corners); float _minV, _maxV; size = Mathf.Min(size, calcSize(corners, out _minV, out _maxV)); } foreach (var rt in list) { var v = applyValue(rt, size); Undo.RecordObject(rt, "Expand or Shark UI"); rt.SetSizeWithCurrentAnchors(axis, v.x); } }
// Token: 0x060024F4 RID: 9460 RVA: 0x000A1188 File Offset: 0x0009F388 public void Update() { if (this.choiceControllers.Count == 0) { return; } if (this.currentDisplayChoiceIndex >= this.choiceControllers.Count) { this.currentDisplayChoiceIndex = this.choiceControllers.Count - 1; } Vector3 localPosition = this.choiceControllers[this.currentDisplayChoiceIndex].transform.localPosition; float target = 0f; RectTransform.Axis axis = this.movementAxis; if (axis != RectTransform.Axis.Horizontal) { if (axis == RectTransform.Axis.Vertical) { target = -localPosition.y; } } else { target = -localPosition.x; } this.currentPosition = Mathf.SmoothDamp(this.currentPosition, target, ref this.velocity, this.movementDuration); this.UpdatePosition(); }
float ClampSize(RectTransform.Axis axis, float size) { switch (axis) { case RectTransform.Axis.Horizontal: if (CurrentSettings.HasMinWidth) { size = Mathf.Max(size, minWidthSizers.GetCurrentItem(minWidthSizerFallback).CalculateSize()); } if (CurrentSettings.HasMaxWidth) { size = Mathf.Min(size, maxWidthSizers.GetCurrentItem(maxWidthSizerFallback).CalculateSize()); } break; case RectTransform.Axis.Vertical: if (CurrentSettings.HasMinHeight) { size = Mathf.Max(size, minHeightSizers.GetCurrentItem(minHeightSizerFallback).CalculateSize()); } if (CurrentSettings.HasMaxHeight) { size = Mathf.Min(size, maxHeightSizers.GetCurrentItem(maxHeightSizerFallback).CalculateSize()); } break; } return(size); }
public static UIPivot AnchorToPivot(UIAnchor anchor, RectTransform.Axis axis) { if (axis == RectTransform.Axis.Vertical) { switch (anchor) { case UIAnchor.Top: return(UIPivot.Top); case UIAnchor.Bottom: return(UIPivot.Bottom); case UIAnchor.Center: return(UIPivot.Center); } } else { switch (anchor) { case UIAnchor.Left: return(UIPivot.Left); case UIAnchor.Right: return(UIPivot.Right); case UIAnchor.Center: return(UIPivot.Center); } } return(UIPivot.None); }
public void SetSizeWithCurrentAnchors(RectTransform.Axis axis, float size) { Vector2 sizeDelta = this.sizeDelta; sizeDelta[(int)axis] = size - this.GetParentSize()[(int)axis] * (this.anchorMax[(int)axis] - this.anchorMin[(int)axis]); this.sizeDelta = sizeDelta; }
public void SetSizeWithCurrentAnchors(RectTransform.Axis axis, float size) { int index = (int)axis; Vector2 sizeDelta = this.sizeDelta; sizeDelta[index] = size - this.GetParentSize()[index] * (this.anchorMax[index] - this.anchorMin[index]); this.sizeDelta = sizeDelta; }
public virtual void setElementSize(RectTransform.Axis axis, float newHeight) { // TODO: UNTESTED! Necessary for proper text paragraph scaling! RectTransform rTrans = transform as RectTransform; rTrans.SetSizeWithCurrentAnchors(axis, uiLabel.preferredHeight); }
protected override void Reset() { base.Reset(); activeAxis = axis = RectTransform.Axis.Horizontal; a = target.sizeDelta.x; b = target.sizeDelta.x; }
static int SetSizeWithCurrentAnchors(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 3); RectTransform obj = (RectTransform)LuaScriptMgr.GetUnityObjectSelf(L, 1, "RectTransform"); RectTransform.Axis arg0 = (RectTransform.Axis)LuaScriptMgr.GetNetObject(L, 2, typeof(RectTransform.Axis)); float arg1 = (float)LuaScriptMgr.GetNumber(L, 3); obj.SetSizeWithCurrentAnchors(arg0, arg1); return(0); }
private static int SetSizeWithCurrentAnchors(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 3); RectTransform rectTransform = (RectTransform)LuaScriptMgr.GetUnityObjectSelf(L, 1, "RectTransform"); RectTransform.Axis axis = (RectTransform.Axis)((int)LuaScriptMgr.GetNetObject(L, 2, typeof(RectTransform.Axis))); float size = (float)LuaScriptMgr.GetNumber(L, 3); rectTransform.SetSizeWithCurrentAnchors(axis, size); return(0); }
/// <summary> /// Set size. /// </summary> /// <param name="axis">Axis.</param> /// <param name="size">New size.</param> public void SetSize(RectTransform.Axis axis, float size) { if (axis == RectTransform.Axis.Horizontal) { NewWidth = size; } else { NewHeight = size; } }
//Given an axis and a percentage, return the screen percentage in pixels. public static float GetPixelsForPercentage(RectTransform.Axis axis, float percentage) { if (axis == RectTransform.Axis.Horizontal) { return(Screen.width / 100 * percentage); } else if (axis == RectTransform.Axis.Vertical) { return(Screen.height / 100 * percentage); } return(0f); }
public static RectTransform Align(this RectTransform me, RectTransform.Axis axis, float target) { var axisVisualCenterPosition = me.GetVisualCenter()[axis.CoordinateIndex()]; var offset = target - axisVisualCenterPosition; var offsetVector = new Vector3 { [axis.CoordinateIndex()] = offset }; me.position += offsetVector; return(me); }
// 使Anchors的宽高与Text内容一致 public static IEnumerator TextPreferredSize(Text t, RectTransform.Axis axis) { yield return(new WaitForEndOfFrame()); TextGenerator tg = t.cachedTextGeneratorForLayout; TextGenerationSettings settings = t.GetGenerationSettings(Vector2.zero); float size = (axis == RectTransform.Axis.Horizontal) ? tg.GetPreferredWidth(t.text, settings) : tg.GetPreferredHeight(t.text, settings); size /= t.pixelsPerUnit; RectTransform rectTransform = t.GetComponent <RectTransform>(); rectTransform.SetSizeWithCurrentAnchors(axis, size); }
public static Vector2 GetAxisPosition_AsVector2(this RectTransform me, RectTransform.Axis axis) { switch (axis) { case RectTransform.Axis.Horizontal: return(Vector2.right * GetAxisPosition_AsFloat(me, axis)); case RectTransform.Axis.Vertical: return(Vector2.up * GetAxisPosition_AsFloat(me, axis)); default: throw new ArgumentOutOfRangeException(nameof(axis), axis, null); } }
public static float GetAxisSize(this RectTransform me, RectTransform.Axis axis) { switch (axis) { case RectTransform.Axis.Horizontal: return(me.rect.width); case RectTransform.Axis.Vertical: return(me.rect.height); default: throw new ArgumentOutOfRangeException(nameof(axis), axis, $"I have no idea what axis {axis} is!"); } }
/// <summary> /// "Inverts" <paramref name="axis"/>, returning <see cref="RectTransform.Axis.Horizontal"/> for <see cref="RectTransform.Axis.Vertical"/>, etc. /// </summary> /// <param name="axis"></param> /// <returns></returns> /// <exception cref="ArgumentOutOfRangeException"></exception> public static RectTransform.Axis Inverse(this RectTransform.Axis axis) { switch (axis) { case RectTransform.Axis.Horizontal: return(RectTransform.Axis.Vertical); case RectTransform.Axis.Vertical: return(RectTransform.Axis.Horizontal); default: throw EnumUtils.InvalidEnumArgumentException(nameof(axis), axis); } }
public static float GetAxisPosition_AsFloat(this RectTransform me, RectTransform.Axis axis) { switch (axis) { case RectTransform.Axis.Horizontal: return(me.position.x); case RectTransform.Axis.Vertical: return(me.position.y); default: throw new ArgumentOutOfRangeException(nameof(axis), axis, null); } }
/// <summary> /// Converts an <see cref="RectTransform.Axis"/> into an index for use with a <see cref="Vector2"/> (or <see cref="Vector3">3</see>, or <see cref="Vector4">4</see>)'s <see cref="Vector2.this"/> accessor. /// </summary> /// <remarks> /// While it is true that the <see cref="RectTransform.Axis"/> <see cref="Enum"/>'s values can be explicitly converted to the correct integers (i.e., <see cref="RectTransform.Axis.Horizontal"/> is ordinal 1), this is more "defensive" (as in, unlikely to break if Unity introduces a fifth dimension), and this also makes the programmer's intent explicit (as opposed to vaguely casting an <see cref="Enum"/> to an int) /// </remarks> /// <param name="axis"></param> /// <returns></returns> /// <exception cref="ArgumentOutOfRangeException"></exception> public static int CoordinateIndex(this RectTransform.Axis axis) { switch (axis) { case RectTransform.Axis.Horizontal: return(0); case RectTransform.Axis.Vertical: return(1); default: throw EnumUtils.InvalidEnumArgumentException(nameof(axis), axis); } }
public float Dimension(RectTransform.Axis dimension) { switch (dimension) { case RectTransform.Axis.Horizontal: return(Width); case RectTransform.Axis.Vertical: return(Height); default: throw EnumUtils.InvalidEnumArgumentException(nameof(dimension), dimension); } }
public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); base.OnInspectorGUI(); if (EditorGUI.EndChangeCheck()) { Undo.RecordObjects(GetRecordTargets(), "picker changed"); foreach (PickerType picker in GetTargetPickers()) { picker.SyncItemList(true); } PickerType targetPicker = target as PickerType; if (targetPicker != null) { GameObject itemSource = targetPicker.itemSource; if (itemSource != null) { RectTransform rectTransform = itemSource.GetComponent <RectTransform>(); if (rectTransform != null && rectTransform.sizeDelta != targetPicker.itemSize) { rectTransform.sizeDelta = targetPicker.itemSize; } } } } RectTransform.Axis axis = GetAxis(); RectTransform.Axis newAxis = (RectTransform.Axis)EditorGUILayout.EnumPopup("Layout", axis); if (axis != newAxis) { Undo.RecordObjects(GetRecordTargets(), "picker changed"); foreach (PickerType picker in GetTargetPickers()) { picker.layout = newAxis; } } }
/// <summary> /// 获取 UI 组件锚点 /// </summary> /// <param name="rectTransform">UI 组件</param> /// <param name="axis">要获取的轴</param> public static UIAnchor GetUIAnchor(RectTransform rectTransform, RectTransform.Axis axis) { UIAnchor anchor = UIAnchor.None; if (axis == RectTransform.Axis.Horizontal) { float x1 = rectTransform.anchorMin.x, x2 = rectTransform.anchorMax.x; if (x1 == 0 && x2 == 0) { anchor = UIAnchor.Left; } else if (x1 == 0.5f && x2 == 0.5f) { anchor = UIAnchor.Center; } else if (x1 == 1 && x2 == 1) { anchor = UIAnchor.Right; } else if (x1 == 0 && x2 == 1) { anchor = UIAnchor.Stretch; } } else if (axis == RectTransform.Axis.Vertical) { float y1 = rectTransform.anchorMin.y, y2 = rectTransform.anchorMax.y; if (y1 == 0 && y2 == 0) { anchor = UIAnchor.Left; } else if (y1 == 0.5f && y2 == 0.5f) { anchor = UIAnchor.Center; } else if (y1 == 1 && y2 == 1) { anchor = UIAnchor.Right; } else if (y1 == 0 && y2 == 1) { anchor = UIAnchor.Stretch; } } return(anchor); }
// Token: 0x060024F6 RID: 9462 RVA: 0x000A123C File Offset: 0x0009F43C private void UpdatePosition() { Vector3 localPosition = this.choiceContainer.localPosition; RectTransform.Axis axis = this.movementAxis; if (axis != RectTransform.Axis.Horizontal) { if (axis == RectTransform.Axis.Vertical) { localPosition.y = this.currentPosition; } } else { localPosition.x = this.currentPosition; } this.choiceContainer.localPosition = localPosition; }
private static int SetSizeWithCurrentAnchors(IntPtr L) { int result; try { ToLua.CheckArgsCount(L, 3); RectTransform rectTransform = (RectTransform)ToLua.CheckObject(L, 1, typeof(RectTransform)); RectTransform.Axis axis = (RectTransform.Axis)((int)ToLua.CheckObject(L, 2, typeof(RectTransform.Axis))); float size = (float)LuaDLL.luaL_checknumber(L, 3); rectTransform.SetSizeWithCurrentAnchors(axis, size); result = 0; } catch (Exception e) { result = LuaDLL.toluaL_exception(L, e, null); } return(result); }
void UpdateScrollView <T>(List <T> objList, GameObject prefab, Transform parent, RectTransform.Axis axis, Action <GameObject, T> afterPrefabInst) where T : class { if (parent.transform.childCount > 0) { foreach (Transform child in parent.transform) { Destroy(child.gameObject); } } foreach (T obj in objList) { GameObject instGO = Instantiate(prefab, parent); afterPrefabInst?.Invoke(instGO, obj); } // get width/height of prefab float singlePrefabHeightOrWidth = prefab.GetComponent <RectTransform>().rect.height; if (axis == RectTransform.Axis.Horizontal) { singlePrefabHeightOrWidth = prefab.GetComponent <RectTransform>().rect.width; } // Add on spacing + padding HorizontalOrVerticalLayoutGroup group = parent.GetComponent <HorizontalOrVerticalLayoutGroup>(); float total = singlePrefabHeightOrWidth + +group.spacing; // Padding on either top/bottom or right/left if (axis == RectTransform.Axis.Horizontal) { total += group.padding.left + group.padding.right; } else if (axis == RectTransform.Axis.Vertical) { total += group.padding.top + group.padding.bottom; } total = total * objList.Count; parent.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(axis, total); }
private void Init() { this._rectTrans = base.transform.GetComponent <RectTransform>(); this._axis = (this.direction != MovementDirection.Vertical) ? RectTransform.Axis.Horizontal : RectTransform.Axis.Vertical; if (this.contentTrans == null) { this.contentTrans = base.transform.Find("Content").GetComponent <RectTransform>(); if (this.contentTrans != null) { } } this._targetSize = this.contentTrans.rect.height; if (this.direction == MovementDirection.Horizontal) { this._targetSize = this.contentTrans.rect.width; } this._rectTrans.SetSizeWithCurrentAnchors(this._axis, 0f); this._delayTimer = 0f; base.transform.GetComponent <CanvasGroup>().alpha = 0f; }