private float GetWorldOffset(EdgeH edgeH) { if (edgeH.OffsetUnit == UnitType.World) { return(edgeH.Offset); } else if (edgeH.OffsetUnit == UnitType.Self) { return(edgeH.Offset * _rectTran.lossyScale.x); } else { return(edgeH.Offset * edgeH.Ref.lossyScale.x); } }
private float GetWBaseH(EdgeH edge) { if (edge.Anchor == RectAnchorH.None) { return(GetWorldRect(edge.Ref).xMin + GetWorldOffset(edge)); } else if (edge.Anchor == RectAnchorH.Left) { return(GetWorldRect(edge.Ref).xMin + GetWorldOffset(edge)); } else { return(GetWorldRect(edge.Ref).xMax + GetWorldOffset(edge)); } }
private void OnGUI() { GUILayout.BeginVertical(); GUILayout.Space(20); _tar = (RectTransform)EditorGUILayout.ObjectField("目标", _tar, typeof(RectTransform), true); _tarEdge = (Edge)EditorGUILayout.EnumPopup("目标边:", _tarEdge); GUILayout.Space(20); _ref = (RectTransform)EditorGUILayout.ObjectField("参考", _ref, typeof(RectTransform), true); if (_tarEdge == Edge.Left || _tarEdge == Edge.Right) { _refEdge0 = (EdgeH)EditorGUILayout.EnumPopup("参考边:", _refEdge0); } else { _refEdge1 = (EdgeV)EditorGUILayout.EnumPopup("参考边:", _refEdge1); } GUILayout.Space(20); _keepPos = GUILayout.Toggle(_keepPos, "保持目标位置"); GUILayout.Space(20); _val = EditorGUILayout.FloatField("相对值", _val); GUILayout.Space(20); GUILayout.EndVertical(); if (_tar != null && _ref != null) { if (GUILayout.Button("应用")) { Apply(); } } else { GUILayout.Label("请设置好目标、参考、以及相对值"); } }