NGUI的anchor

NGUI的SetAnchor方法()3.9.2版本

//UIRect.cs的SetAnchor方法
    public void SetAnchor (GameObject go, int left, int bottom, int right, int top)
    {
        Transform t = (go != null) ? go.transform : null;

        leftAnchor.target = t;
        rightAnchor.target = t;
        topAnchor.target = t;
        bottomAnchor.target = t;

        leftAnchor.relative = 0f;
        rightAnchor.relative = 1f;
        bottomAnchor.relative = 0f;
        topAnchor.relative = 1f;

        leftAnchor.absolute = left;
        rightAnchor.absolute = right;
        bottomAnchor.absolute = bottom;
        topAnchor.absolute = top;

        ResetAnchors();
        UpdateAnchors();
    }

SetAnchor()不能写上方向.relative就是anchor的方向,右上都为1,左下都为0,中间为0.5f
这里写图片描述
但明SetAnchor明显不够用了,也可能一个个去设置了

      sprite.bottomAnchor.Set(panel.transform, 0.5f, 41);
      sprite.topAnchor.Set(panel.transform, 1, -51);

可以去copy UIRect的方法,写成这样

   public void SetAnchorInspector(GameObject go, int left, int right, int bottom, int top, float leftOri=0f, float rightOri=1f,float bottomOri=0f, float topOri=1f)
    {
        Transform t = (go != null) ? go.transform : null;

        leftAnchor.target = t;
        rightAnchor.target = t;
        topAnchor.target = t;
        bottomAnchor.target = t;

        leftAnchor.relative = leftOri;
        rightAnchor.relative = rightOri;
        bottomAnchor.relative = bottomOri;
        topAnchor.relative = topOri;

        leftAnchor.absolute = left;
        rightAnchor.absolute = right;
        bottomAnchor.absolute = bottom;
        topAnchor.absolute = top;

        ResetAnchors();
        UpdateAnchors();
    }

写成了Inspector视图的顺序.对照起来比较方便

      sprite4.SetAnchorInspector(panel, 351, -255, -134,  -85,0,1,1,1);

猜你喜欢

转载自blog.csdn.net/SendSI/article/details/79056716