2.1.2 。prefab 根节点 设置 widget ,设置为撑满。widgit 四周都是0 ,这时 prefab的根节点在编辑器中显示的坐标会变成设计分辨率(场景)的中心,通过加载prefab然后实例化,添加到节点树, 并显示出来。 这是 会出现 prefab显示的第一帧 它的位置 会向右上角偏移 半屏的距离,然后立即回到当前屏幕的中心,这时全屏prefab的中心才能与屏幕中心重合。
即使在实例化后,在addChild之前 设置prefab实例的坐标为0,0. 效果也是一样。
IOS 表现最明显
widget更新慢了?用widget的updateAlignment方法立即更新试试。
试过了 不行。 老样子
2.1.2 性能提升还是非常明显的。 但是有个问题。 我的 imax 机器可能渲染的比较快,就会出现以下情况:
2.1.2 ios 打包的后运行出现异常: 加载一个 prefab,prefab节点底部有一个 灰色背景,这个背景通过 widget
拉伸至全屏,跟节点也是拉伸至全屏。 因设计分别率比实际运行的分辨率 小,显示的时候会出现 先显示 未拉伸时的大小,
然后再拉伸显示,这样从视觉上就会出现闪一下的效果。 也就是说 在未拉伸时 就被显示出来了。 2.1.0 没有这种情况。 2.1.2 的安卓版的包 也没有这种情况。同一套代码。 widget 设置城allways 或 on_win_resize 效果都是一样的。
而且 仔细看的话,假如我的prefab根节点是 全屏拉升的,那么的xy 值就是 界面中心, 在addChild之前 设置为0,0,但是还是会出现 被加载的prefba的实例 的中心 会先显示在屏幕右上角,然后才会跳到屏幕正中心。
个人猜想是不是 addChild的时候先加入节点树了,然后就渲染了,相关计算却是在渲染之后计算的。配置差一点的机器就基本发觉不到这个效果。
坐标偏移 可以通过addchild之前设置为0,0解决 单是这个拉升适配问题不行。它必须addchild之后才能参与计算
不确定2.1.0是不是没问题 因为2.1.0比2.1.2慢 所以可能渲染出来的时候已经计算好了
这个问题应该跟 widget 无关的。就算没有 widget 也会这样是不?
能帮忙确认下是什么平台才会有这个问题嘛?或者给个 demo?
没有 加widget 就是原大小,
1.场景分辨率 1136*640,增加 widget 上下左右都是0 widget 都是 on_winsizechange.
- 制作一个prefab ,增加 widget 上下左右都是0 ,prefab下面有个背景图,同样加上widget 上下左右都是0
那么 这个prefab的xy 就是 568,320, widget 都是 on_winsizechange.
3.场景中 动态加载这个prefab,并添加到场景中,注意实际手机的分辨率要高于 程序的设计分别率,
采用fixheight模式。
情况:苹果6,imax 表现明显
1.如果加载完之后 不手动设置加载实例化的prefab的坐标为0,0,直接添加到场景节点树中
非常明显的看到 界面先在右上角 显示,下一帧立即显示到屏幕中央(widget产生作用)
如果在加入之前手动设定了坐标为0,0。那么就没有这个中心移动的现象。
手动设定坐标 很简单,自己写就行了。 但是写了之后就是另外一个现象。
新增的实例添加到场景后, 第一帧先显示 设计分辨率的大小, 第二帧 才会显示全屏 大小的效果。
就算在addChild之后,让widget立即更新 也还是一样。这个代码应该不难,我应该不会写错。获取widget然后调
方法就行了。但是还是一样的效果。
安卓机上我的配置低些,效果不明显。机器稍微好点 绝对能看到这个闪动的过程。
综上,就是node节点 被addChild之后,就可以被渲染,而相关组件的计算如widget,会后执行,这样如果在计算之前渲染了,
那么就会出现上面的先显示原大小,后显示拉伸的效果。
当然我也可以让它慢一点显示出来,但是有些特殊的场景,需要立即显示到正确的地方就不太好办了。
最终就是说有没有什么办法,确保,我的位置大小根据被添加到场景之后的情况做一次计算之后,才会渲染显示。
单独加载的prefab, 如果根节点使用了widget,那么它加载后初始化的时候 是以整个场景的大小去适配的。添加到某个节点后,它要延迟一点才再计算,此时 已经渲染了一帧以上了,如果手机性能比较好的话。 就是整个原因了。。 jare
大佬帮忙看看有没有 啥办法 让它能再 addChild 之后,渲染之前 ,把位置更新对?
pc,浏览器正常,不会闪 就ios ip6 和 imax都比较明显。 安卓没有好机器 感觉不出来。
人工置顶。
我答应会看的帖子就一定会看的
检查下widget的嵌套问题呢,从根到子节点,widget顺序更新。(个人猜测)
Mark
不好意思,我们本周还是没空看
嗯 感谢 还记得。 如果修改这个问题对底层的影响可能比较大,也可能很小。还希望大佬能尽快看下。因为涉及到渲染这块,而不是上层逻辑。
你好,我根据你的描述创建了一个 demo,在 imax 上进行测试,不会出现你说的问题(他会有一个渐变的过程,完成后元素已经在中心点了,没有你说的效果),能否有空的时候做一下 demo 我测试看看呢?感谢
麻烦提交一下 demo 谢谢~
这2天准备个
请问现在解决了吗?2.1.2在ios遇到了同样的问题。