2.2.0 cc.instantiate方法bug

一直用creator开发h5的项目,在升级2.2.0之后发现一个问题。

我们项目为了兼容更多的浏览器,引入了babel-polyfill模块。然后就导致了cc.instantiate这个方法的异常(移除babel-polyfill模块恢复正常,但是会让更多的用户无法进入游戏,log显示this device does not support webgl,1.9.3版本的时候是支持的)。

具体表现为传入参数为cc.Prefab类型时,头两次能正常创建出新节点,第三次调用开始直接没有反应,程序也不会继续往后走。查看log输出没有任何错误信息。希望引擎组的大大们帮忙看看是什么问题。

ps:1.9.3版本时是正常的,2.1.2.没有注意测试,不知道有没有问题

this device does not support webgl

log信息都提示你设备不支持WebGL了

从2.0开始就不再支持Canvas了,因此在不支持WebGl的设备上运行,是会有一些问题的

官方文档中的v2.0升级指南中:

你说的这些我都了解,1.9.3版本的时候在那台机子上确实是能够用webgl渲染的啊,为啥升级之后就不行了?不过我主要是想知道cc.instantiate这个方法到底出了什么问题,能不能帮忙看下?这两个问题不相关@BigBear

没有添加babel-polyfill时,显示this device does not support webgl。这是引擎告诉你,这个设备不支持WebGL。
设备不支持WebGL,并不是说你加上一个babel-polyfill,他没有这个log了,他这个设备就支持WebGL了。
babel-polyfill没有这么大的能力,babel只是转换JS语法,使得在一些只支持ES5的浏览器上也可以正常运行,
因此就算你加了babel-polyfill,虽然没有this device does not support webgl这个log显示了,但这个设备他还是不支持WebGL,只支持Canvas的,但是Creator2.x版本对于Canvas已经不支持了,所以如果用Creator2.x构建后在Canvas模式下运行,是会有问题的。

至于你看到表现是cc.instantiate的问题,可能是Canvas渲染出问题了,导致你觉得没有反应,实际上不是cc.instanitate这里的问题。

原因都被你找到了:babel-polyfill模块的影响,为啥会还觉得是cc.instantiate的问题呢?

因为在1.9.3的时候,那台设备就是用webgl的模式渲染的啊,而且在支持webgl的设备上,cc.instantiate也有问题,所以我觉得这个问题不是渲染导致的,而是不知道为啥和babel-polyfill起了冲突。

至于为啥1.9.3的时候没冲突,2.2.0的时候有冲突,这个才是我想解决的

本身creator就有在用babel,版本是6.26.0的。不知道你那边用的是哪个版本的babel-polyfill,并且你是怎么使用的也不太清楚。
建议你新建一个demo工程,试一下。排除其他问题的干扰,另外你是在什么设备或浏览器上测试的?

我们这边用的也是 “babel-polyfill”: “^6.26.0”,使用方法是在项目最开始的时候require(‘babel-polyfill’);
在windows10的微信2.7.1.82的浏览器里面测试也有第三次创建不出的问题