当前位置: 首页 > 工具软件 > egret-core > 使用案例 >

egret3d 探坑经历

支智志
2023-12-01
公司用egret开发APP和微信小游戏,想试试3D,于是。。。
学习http://developer.egret.com/cn/docs/3d/docs/guide/getting-started-introduction/
这是官网egret3d最新的学习文档,有点简单,但大体知道 要如何使用~官方的 git上的 egret3d项目 里面的exemples 是我 学习用法 的 主要方式。
总结:(几日学习总结下来的开发流程)
1.要下一个egret-Pro 编辑器,目前功能不完善,仅仅用来创建新3d项目,
    官方文档里 提及了 需要npm 去下载 paper-cli ,文档里 的意思似乎就是 相当于 2d项目里的 egret create 的作用,
    即paper create命令 可以创建新项目,然并卵,没办法 ,用egret-Pro新建项目。
    有一些小坑,就是Pro 比较简陋~,注意选空项目 和建项目的路径要选一下。

2.有了3d空项目,这时 应该继续用paper 引入3d库,然而 因为 paper create都不管用所以 ,我直接用其它方式 代替了。如下
    先在3d项目 目录下 paper install egret3d@next  ,他会帮我们给项目导入 3d库,但是版本和我 学习的exemple 有冲突,
    因为是开源的嘛,所以 ,直接去git上将egret3d项目 clone下来,里面有一个 core/bin 文件夹,将bin里面的 三个文件 替换 我们3d项目目录下的 egret3d里面的
   几个egret3d.d.ts,egret3d.js和egret3d.ts,同时在libs里面也有一个 egret3d 目录,同样替换掉即可。这下,我们的项目里面就能 访问到 对应的 api了。

3.然后就是 将egret-core 项目 从git上也clone下来,用来编译项目,按照文档操作,将其导入luncher即可。记得将项目都branch到master分支,默认好像不是。

4.导入5.3.x后,将 egret-Pro创建的项目 在luncher里 导入项目,然后直接用wing打开即可。

粗略试过,打包微信 可以用,不过 有一些小问题,姑且能用
目前在将2d 框架 导入 3d中。。。
欢迎 分享经验~自己摸索,苦呀~
几个 过程中会遇到的坑
1.导入wing 后 生成的egretProperties.json 里面 oimo的路径 不对 应该是 libs\oimo 而不是 oimo\oimo
2.最大的问题之一就是 入口变成了 main函数,我直接 在 egret3d.runegret();后面手动new 了 一个Main 实例来启动逻辑,
先 加载资源,然后 create 一个 defaultScene,纯代码的方式 创建 scene,也可以 从 unity里创建 再导出来,那就直接load scene即可,
文档里有相关说明,不过并不健全,还是要自己摸一摸,我们项目不需要太复杂3d,早知道还不如直接 用three.js了。。。。
然后 create node_2d ,return stage,这就是 2d的 egret.Stage 将它 传递出去,即可 衔接原来的2d 开发逻辑。
3.然后下午要解决的一大问题,就是资源 ,3d项目 resources 里面目录结构 变了,编译时,会根据路径 给他们打包的。
    image/png之类的若在3d目录下,会打包成Texture,还在想怎么 处理~
4.之后的就是 打包wxgame的了,
egret-Pro创建项目 最后 publish后 的egret.wxgame.js有点问题,直接将报错地方 initTouch 什么的换成 UpdateTouch就是 外层函数名即可,
包括官网说的,将game.js里的 egret.runegret 换成egret3d.runegret,后,要手动 new 一下Main实例,
5.我没有 使用命名空间~

--持续更新--

 

egret3degret-coreegretPro

 类似资料: