能解釋一下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中的代碼應(yīng)該是一個道理,為了讓代碼更完整一點, 就傳上來了。
先說一下我自己的理解:
this.gameObject.transform.localScale = new Vector3 (r, r, 1);//這句應(yīng)該是等比例縮放
this.gameObject.transform.localPosition = new Vector3 (x, y, 0);//這句應(yīng)該是居中(結(jié)合上面x和y的值來看)
_rect.sizeDelta = new Vector2 ((_original.x - Screen.width), cha / r);//這句應(yīng)該是變化_rect的大小, 但是不知道Vector2構(gòu)造函數(shù)中的值有什么講究
另外, _rect的大小需要單獨做變化嗎?難道不是隨著父元素的值一起變化的嗎?
2016-07-01
ugui本身有一套對UI的適配,就是通過錨點框和pivot實現(xiàn)的,具體細節(jié)自己研究吧。如果這里不對rect改變,那rect會按照ugui的適配方式變化,這個工程里面,rect的錨點框有一定大小的,你會發(fā)現(xiàn)當(dāng)縮小屏幕的時候,panel背景不能占滿屏幕了,如果你把rect錨點框設(shè)置成一個點,那ugui在屏幕適配時不會造成rect大小的改變,此時那行代碼也不需要了