如图,编辑器加载脚本顺序无法保证(文档里说了插件应该最新加载的)
导致我其他ts依赖插件里的代码都加载失败了,进而导致更多问题
我尝试了插件的目录名和文件名,尽可能段,用"0_","A_"下滑线做前缀等方式,发现都办法让插件脚本优先加载
怀疑这里是个bug,特来反馈和求助
@panda 救命
如图,编辑器加载脚本顺序无法保证(文档里说了插件应该最新加载的)
导致我其他ts依赖插件里的代码都加载失败了,进而导致更多问题
我尝试了插件的目录名和文件名,尽可能段,用"0_","A_"下滑线做前缀等方式,发现都办法让插件脚本优先加载
怀疑这里是个bug,特来反馈和求助
@panda 救命
目前确实有这个问题,因为从设计的角度我们认为插件脚本之间不应该互相依赖。我看你加载的是 protobuf,能不能把 protobuf 打包成一个文件,避免插件脚本之间的依赖呢?
还有一个办法是定制项目模板,在模板的 index 中手动添加这些脚本的 script element。模板可以通过菜单项中的(项目 - 添加构建模板/添加预览模板)来创建
首先感谢回复,不然我都觉得整个社区没什么人
不是插件间依赖哦,是我的ts脚本依赖插件.,但ts脚本比插件先加载导致报错(因为protobuf的js未加载,提示protobuf.roots未定义)
说到模版我也在用,因为我要做个小游戏同时在H5和微信小游戏上跑
所以对授权和通讯方面做了自己的api,然后在不同模版上实现
想实现这个思路,我遇到了一个困难
比如websocket,我定义了ZWebSocket这个接口以及下面的send等方法
想在各模版下实现
现在的问题在于我用了很多方法,还是不能完美的让creator3d不会提示ZWebSocket这个类不存在(或者用import时提示无法识别的标识符)
我说下我用的2个方法:
1.首先就是比较经典的ZWebSocket.d.ts定义了.我发现在我的项目中,不管d.ts里放什么,都会提示导入失败(场景开发工具里看到的),我这个帖子里有发具体的错误日志 https://forum.cocos.com/t/creator3d-ide/85095
2.然后试了插件脚本的方法,让编辑器也能加载,但可能有缓存还是怎么搞的,发现导入不抛错了,但构建出错了,错误内容居然是导入时无法识别的标识符错误,看起来像是缓存,但我尝试清理了所有非代码的部分,以及全部重新构建,还是无法解决
不知道是我哪里用错了还是思路有问题?
可能要发一下你的具体使用方法,.d.ts 只是描述,到最后代码中是不存在的,所以无法从 .d.ts 中 import 实际需要用的内容,只能 import 类型声明之类的东西,用于编译器校验。你的 ZWebSocket 具体实现在哪里,要确保这个类存在,如果它是一个插件,你就把它暴露到全局,然后在你的脚本中通过全局对象来访问即可。
插件脚本一定会在项目脚本之前加载,所以你说的[quote=“fengssy, post:3, topic:85184”]
不是插件间依赖哦,是我的ts脚本依赖插件.,但ts脚本比插件先加载导致报错(因为protobuf的js未加载,提示protobuf.roots未定义)
[/quote]
我觉得可能还是使用有问题,可能是插件脚本没有设置正确的平台。
关于 Protobuf 的使用,也可以参考这个帖子中的方法
https://forum.cocos.com/t/creator3d-protobufjs/85135/4?u=panda