//-------∽-★-∽------∽-★-∽--------∽-★-∽ApplyGameObjectParam∽-★-∽--------∽-★-∽------∽-★-∽--------// public override void ApplyGameObjectParam(GameObject go, JsonData data) { base.ApplyGameObjectParam(go, data); if (HasParam(data, PATTERN_SHRINK) == true) { //SHRINK按钮 go.AddComponent <KButtonShrinkable>(); } else { go.AddComponent <KButton>(); } bool shouldResetPivot = true; //需要重置轴点 if (HasParam(data, PATTERN_ANCHOR)) { //有锚点参数 string param = GetParam(data, PATTERN_ANCHOR); if (param.Contains(PARAM_CENTER) && param.Contains(PARAM_MIDDLE)) { //居中 shouldResetPivot = false; } } if (shouldResetPivot && !HasParam(data, PATTERN_PIVOT)) { //没有轴点参数 KuiUtil.SetPivotSmart(go.GetComponent <RectTransform>(), new Vector2(0.5f, 0.5f), true); } }
//-------∽-★-∽------∽-★-∽--------∽-★-∽Pivot∽-★-∽--------∽-★-∽------∽-★-∽--------// private void SetPivot(GameObject go, JsonData data) { var s = GetParam(data, PATTERN_PIVOT); Match m = PATTERN_PIVOT.Match(s); float pivotX = Int32.Parse(m.Groups[2].Value) / 10.0f; pivotX = Mathf.Clamp01(pivotX); float pivotY = Int32.Parse(m.Groups[3].Value) / 10.0f; pivotY = Mathf.Clamp01(pivotY); RectTransform rect = go.GetComponent <RectTransform>(); KuiUtil.SetPivotSmart(rect, new Vector2(pivotX, pivotY), true); }
static public int SetPivotSmart_s(IntPtr l) { try { GameObject self = (GameObject)checkSelf(l); float x, y; checkType(l, 2, out x); checkType(l, 3, out y); RectTransform rectTrans = ComponentUtil.NeedComponent_ <RectTransform>(self); KuiUtil.SetPivotSmart(rectTrans, new Vector2(x, y), true); pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
//-------∽-★-∽------∽-★-∽--------∽-★-∽Anchor∽-★-∽--------∽-★-∽------∽-★-∽--------// public void SetAnchor(GameObject go, JsonData stateData) { string param = GetParam(stateData, PATTERN_ANCHOR); param = param.ToLower(); param = param.Replace(PARAM_PREFIX, ""); RectTransform rectTransform = go.GetComponent <RectTransform>(); Vector2 anchorMin = new Vector2(); Vector2 anchorMax = new Vector2(); if (param == PARAM_STRETCH) { anchorMin.Set(0, 0); anchorMax.Set(1, 1); if (go.transform.parent == null || go.transform.parent.name.Contains("Canvas")) { Vector3 oldPos = rectTransform.position; rectTransform.sizeDelta = Vector2.zero; rectTransform.anchorMin = anchorMin; rectTransform.anchorMax = anchorMax; rectTransform.position = oldPos; return; } } else { //左中右 if (param.Contains(PARAM_LEFT)) { anchorMin.x = anchorMax.x = 0; } else if (param.Contains(PARAM_CENTER)) { anchorMin.x = anchorMax.x = 0.5f; } else if (param.Contains(PARAM_RIGHT)) { anchorMin.x = anchorMax.x = 1; } else { anchorMin.x = 0; anchorMax.x = 1; } //上中下 if (param.Contains(PARAM_UPPER)) { anchorMin.y = anchorMax.y = 1; } else if (param.Contains(PARAM_MIDDLE)) { anchorMin.y = anchorMax.y = 0.5f; } else if (param.Contains(PARAM_LOWER)) { anchorMin.y = anchorMax.y = 0; } else { anchorMin.y = 0; anchorMax.y = 1; } } if (param.Contains(PARAM_CENTER) && param.Contains(PARAM_MIDDLE)) { KuiUtil.SetPivotSmart(rectTransform, new Vector2(0.5f, 0.5f), true); } KuiUtil.SetAnchorSmart(rectTransform, anchorMin, anchorMax); }