为了账号安全,请及时绑定邮箱和手机立即绑定

能解释一下OffsetUI中enable分支中的这段代码吗?

if (_enable) {
    float rx = Screen.width / _original.x;
    float ry = Screen.height / _original.y;
    if (rx < ry) {
        float r = rx;
        float cha = (1f - r) * Screen.height;
        float x = (1f - r) / 2 * Screen.width;
        float y = cha / 2f;
        this.gameObject.transform.localScale = new Vector3 (r, r, 1);
        this.gameObject.transform.localPosition = new Vector3 (x, y, 0);
        _rect.sizeDelta = new Vector2 ((_original.x - Screen.width), cha / r);
    } else {
        float r = ry;
        float cha = (1f - r) * Screen.width;
        float y = (1 - r) / 2 * Screen.height;
        float x = cha / 2f;
        this.gameObject.transform.localScale = new Vector3 (r, r, 1);
        this.gameObject.transform.localPosition = new Vector3 (x, y, 0);
        _rect.sizeDelta = new Vector2 (cha / r, (_original.y - Screen.height));
    }
}

else中的代码应该是一个道理,为了让代码更完整一点, 就传上来了。

先说一下我自己的理解:

this.gameObject.transform.localScale = new Vector3 (r, r, 1);//这句应该是等比例缩放

this.gameObject.transform.localPosition = new Vector3 (x, y, 0);//这句应该是居中(结合上面x和y的值来看)

_rect.sizeDelta = new Vector2 ((_original.x - Screen.width), cha / r);//这句应该是变化_rect的大小, 但是不知道Vector2构造函数中的值有什么讲究

另外, _rect的大小需要单独做变化吗?难道不是随着父元素的值一起变化的吗?


正在回答

1 回答

ugui本身有一套对UI的适配,就是通过锚点框和pivot实现的,具体细节自己研究吧。如果这里不对rect改变,那rect会按照ugui的适配方式变化,这个工程里面,rect的锚点框有一定大小的,你会发现当缩小屏幕的时候,panel背景不能占满屏幕了,如果你把rect锚点框设置成一个点,那ugui在屏幕适配时不会造成rect大小的改变,此时那行代码也不需要了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
《小十传奇》 Unity3D 休闲游戏开发
  • 参与学习       40232    人
  • 解答问题       123    个

手把手教你用Unity3D开发休闲游戏,小伙伴们,还等什么

进入课程

能解释一下OffsetUI中enable分支中的这段代码吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信