为啥通过UIPackage.CreateObject创建出来的GObject 不弄一个FitScreenMode参数?

因为要使用到 高度适配, 左右居中。  现在通过UIPackage.CreateObject()创建出来的UI对象, 都是从坐标0,0开始的,无法居中显示,在UI编辑器里是可以直接预览的。  然后查看了教程里,UIPanel有fitScreen这个参数,里面的FitScreen.FitHeightAndSetCenter 正好满足需求。 但是如果改为UIPanel的改动太大了,有没有更节省成本的做法。
QQ截图20171106184754.png


QQ截图20171106184809.png
  上面的图是屏幕为设计分辨率, 下面的图为iPad
已邀请:

NOW - Unity

赞同来自: mynamepfd

总结一下, 全屏背景 对容器组件 居中关联,其余各控件 也加上关联(位置、宽高)。 如果需要按高度适配,屏幕居中显示。 那么只需要UIContentScaler选择 MatchHeight,代码里面调用一下 view.MakeFullScreen() 就能达到在UI编辑器里   启用适配、适应屏幕为全屏、屏幕大小为iPad一样的效果。 我统称之为 布局式适配方案。 之前全屏缩放式适配方案+黑边被毙了。

NOW - Unity

赞同来自:

我自己尝试移动相机到居中位置,  关联就不好使了。

谷主

赞同来自:

fitscreen的代码很简单的,不是什么高科技,用代码几句就解决了。既然你是代码创建的UI,也不在乎写多这几句了,嫌麻烦可以封装成工具函数。
 
_view.x = (int)((GRoot.inst.width - _view.width) / 2);
_view.height = GRoot.inst.height;
_view.addRelation(GRoot.inst, RelationType.Center_Center);
_view.addRelation(GRoot.inst, RelationType.Height);

NOW - Unity

赞同来自:

QQ截图20171106201746.png

在ipad下应该是如编辑器一样。
 
而事实上 那些控件 设置了 宽宽%,高高%的在Unity下面 也没有如实缩放。 设置了对容器组件 左左之类的还是看不见。

谷主

赞同来自:

那当然啊,你这种按高适配的肯定有可能宽度超出屏幕的,这不是关联什么的能解决的。这种适配方式都要求留安全区域的,两边随时被放弃的。永远不想被截的就选按widthorheight

NOW - Unity

赞同来自:

UI编辑器里 这种就是我想要的那种  ,这跟运行时 理论上是一样的吧

谷主

赞同来自:

编辑器我看你设置的是全屏,不是什么适应高度居中

要回复问题请先登录注册