deepkolos / three-platformize

一个让 THREE 平台化的项目,目前已适配微信,淘宝,头条小程序,微信小游戏
533 stars 82 forks source link

该如何正确使用这个库? #9

Closed wujianv5 closed 3 years ago

wujianv5 commented 3 years ago

请教一下,如何使用这个库才是正确的方式?

我现在的做法是,按照文档中写的,去link这个库,然后在小程序开发工具中点“构建npm”,然后下面这句 import WechatPlatform from 'three-platformize/src/WechatPlatform'; 会提示找不到,然后我会在 three-platformize 目录下 build 好 WechatPlatform.js,直接copy到我的工程目录下引用,就可以了。

上面的方法我使用 Three.js 108 版本是可以的,这个版本是微信官方插件使用的版本。 但是当我使用 126 版本的时候,新建renderer会报错 this.renderer = new THREE.WebGL1Renderer({canvas, antialias: true}); 报错: TypeError: Cannot read property 'mark' of undefined

代码出错的地方是在 WebXRManager 的构造方法中 this.setSession = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(value) {

请教一下

  1. 使用 three-platformize 的方式是否正确
  2. 上面 renderer 的报错可能是什么原因

谢谢!

deepkolos commented 3 years ago

推荐使用rollup做二次构建,不使用小程序npm,构建配置和使用方法可参考

https://github.com/deepkolos/three-platformize-demo-wechat

wujianv5 commented 3 years ago

找到了一个方法引用 three-platformize。 rollup 编译为 cjs 格式,且把 babel plugin 去掉,即直接修改 rollup.config.three.js,把最后面的 esm 格式更改为 cjs 然后编译。 最后将编译出来的 build/three.module.js 拷贝到项目目录下。

deepkolos commented 3 years ago

这样就没tree shaking了