Cocos Creator 3.8.5 社区版公测贴 【已发布】

362升级385,


纹理设置是R8 =4

然后rgb没报错,但是渲染不出来,362正常
纹理设置是rgb8 = 24

你好,感谢反馈。方便整理一个复现问题的示例工程吗?

hello大佬

cc.view.on(‘canvas-resize’, ()=>{
console.log(‘窗口大小’, cc.view.getVisibleSize());
},this);

无论窗口怎么拖拽,getVisibleSize返回的始终是设计分辨率
screen.winSize是实时更新的,但不是窗口真实大小,始终小一圈的
最新结果:
窗口真实尺寸 = new Size(screen.winSize.width/view._scaleX, screen.winSize.height/view._scaleY)
有没有直接获取的接口啊,还要自己算

image R8被移除了

NewProject.rar (238.6 KB) 模拟了一个yuv有问题,rgb可以显示

这个 getVisiableSize 就是返回设计分辨率的。
像素有 getVisibleSizeInPixel 这个接口。

我这里spine也是崩溃,3.8.4就没有问题。
我应该怎么改?

3.8.4的spine动画正常播放,到3.8.5test就直接崩溃了,请问有解决办法吗?

那不是跟getDesignResolutionSize一样了

getVisibleSizeInPixel并不能返回实时的窗口大小
image
因为_visibleRect不会实时更新,只有screen.winSize会实时更新

窗口实时可见尺寸 = new Size(screen.winSize.width/view._scaleX,screen.winSize.height/view._scaleY)

没有任何接口可以获取到这个尺寸,只能自己算,不合理啊

我也遇到相同的问题,请问你们是怎么解决的呢?

只要窗口大小有变化,你选择 fixwith 或者 fixheight,getVisiableSize 和 getVisiableSizeInPixels 也是实时更新的。

        cc.view.on('canvas-resize', ()=>{
            console.log('getVisibleSize', cc.view.getVisibleSize());
            console.log('getVisibleSizeInPixel', cc.view.getVisibleSizeInPixel());
            console.log('windowSize', screen.windowSize);
        },this);

我验证了一下,这三个接口,都会在 canvas resize 的时候更新的。


我不知道你说的 getVisiableSize 不会实时更新具体指的是?

你在项目设置 -> 项目数据 -> 适配屏幕宽度/高度 的配置是怎么样的?

另外,可以查阅一下多分辨率适配文档,了解一下概念:

https://docs.cocos.com/creator/3.8/manual/zh/ui-system/components/engine/multi-resolution.html

我看你项目是只勾选 webgl1 后端,可能 webgl1 不支持 R8 格式的纹理。

https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D

When using a WebGL 2 context, the following values are available additionally:

  • gl.RED // 对应引擎内的 Format.R8,是只在 webgl2 里面才生效的
  • gl.RG
  • gl.RED_INTEGER
  • gl.RG_INTEGER
  • gl.RGB_INTEGER
  • gl.RGBA_INTEGER

我调整为 webgl2 的后端能够正常显示了。

362 中只勾选 webgl1,也是会报错的。

我新建的工程,没有设置过项目,预览也需要勾选?

新建项目,这个 webgl 后端默认值可能有调整,你可以在项目设置、功能裁剪中确认一下。
预览也会受到此影响的。

sprite

this.render.setMaterial(this.mat, 0)
设置后通过下面获取到的还是就的
this.render.getMaterial(0)
3.6.2使用上面就可以,但是现在3.8.5一下方法都不生效了

通过设置this.render.material = this.mat
获取this.render.material,是正确的,但是实际渲染使用的还是customMaterial,还是没有更新最终的材质球
这个要怎么改

==================
找到接口了,有专门修改customematerial的,基类没有,在sprite里面

验证了一下,确实勾选fitwidth或者fitheight,getVisibleSize会实时更新

你之前该不会两个都勾上了?

我都没勾,我喜欢自己算

这样别人接手我项目,不管勾没勾都不影响 :partying_face:

在用最新的版本打包的时候 android 部分的编译后 android->data 目录下的文件不会删除再新增 只会增加导致更改或者加的素材用着混乱更新不上 只能是手动先删除再点编译 同样的流程在编译 iOS 端是正常的