最新准备的3.x框架使用和引擎相同。
整个框架是插件脚本实现的。
// 比如都是这样导入的。
import { state } from 'lcc';
在编辑器中虽然提示无法解析模块’lcc’,被视为外部模块。预览也是正常的。
但是,发布的时候好像必须解析这个’lcc’模块,否则就报错停止。
希望项目有配置这种外部模块的地方,不需要脚本解析,就像’cc’,‘cc/env’ 这些引擎的模块。
最新准备的3.x框架使用和引擎相同。
整个框架是插件脚本实现的。
// 比如都是这样导入的。
import { state } from 'lcc';
在编辑器中虽然提示无法解析模块’lcc’,被视为外部模块。预览也是正常的。
但是,发布的时候好像必须解析这个’lcc’模块,否则就报错停止。
希望项目有配置这种外部模块的地方,不需要脚本解析,就像’cc’,‘cc/env’ 这些引擎的模块。
预览时候也没找到 lcc 吧,你lcc是在哪的
‘lcc’ 是在插件脚本里面的, 希望能配置编译的时候忽略这个模块的解析, 就像使用 'cc’模块一样。
编辑器里面和预览是正常的
能不能加个这种配置, 提高下可扩展性啊
或者,发布的时候即使 提醒了是外部模块, 也可以正常发布。
预览的时候就正常使用,发布的时候应该也可以忽略的吧
3.2 版本只能在普通脚本的组件里面使用@menu了吗, 我怎么感觉在插件脚本里面定义没起作用了。
不知道是不是我用法的问题。
3.x 怎么感觉扩展能力在变弱了, 多了很多必须那样使用的规定,缺少了灵活性。
是的插件脚本不能使用 @menu。
你说的在插件脚本里定义了模块 lcc,是怎么个定义法。模块是不能定义的,你不会说的是 window.lcc = xxx吧
你想用import lcc from “lcc”,现在别无他法,只能通过放在node_modules 里才可以。
我周一看能不能给你仓库提点PR啥的
那还是算了吧,现在我不弄3.x了。
扩展性太差了, 普通脚本做出来的框架或者系统功能,使用繁琐,体验感觉是极差, 只能做点简单单一的功能吧。
这个扩展便利性越来越差了啊,什么时候能像unity那样就好了,直接可以做一个类型游戏的插件,而且也不会太难用。
你好。我看了一下,https://gitee.com/nomat/lcc-framework-client 这个是你的项目吧。
你的整个框架是以插件的形式提供的,然后所有相关代码,你是打包成了 assets/scripts/lcc-framework.js(CommonJS 模块)。
这里建议你这样让你的用户使用脚本:
将 assets/scripts/lcc-framework.js 拷贝至他们的项目目录里。默认放进去就行,不要勾选插件脚本。
如此引用:import lcc from './lcc-framework.js'; new lcc.Client()。其中 './lcc-framework.js' 是相对于调用模块的路径。注意后缀是需要的。
我能理解你为什么希望你的用户以 import lcc from "lcc" 这一的方式去使用你的库 —— 这样明显很简洁。
from "lcc" 中的 "lcc" 称为裸模块说明符(Bare module specifier)。
直到 Creator 3.2,Creator 唯一能以裸模块说明符形式去导入的模块只能存在于 node_modules 中,作为比较:
浏览器甚至不允许你使用裸说明符,他们只支持相对路径。
Node.js 和我们一样也只支持以裸说明符引用 node_modules 中的模块。
因此,如果非要以 from "lcc" 的形式去使用,你应该将你的模块发布到 npm 里,让用户以 npm install 的形式安装。
我们暂定计划在 3.3 放出“实验性质” 的 import map 支持,届时,你可以不用发布到 npm 里。而是让用户在项目中定义一个映射:
{
"imports": {
"lcc": "./assets/script/Normat/lcc-framework.js"
}
}
用户便可以以 from "lcc" 的方式去引用你的库了。
谢谢回答。
其实在3.x版本中,整个框架是打包为System模块的。所以直接放到编辑器里面是可以直接运行的,而且预览也是一切正常。
有点bug 就是在普通脚本中使用的时候会报错没有找到’lcc’模块,被视为外部模块, 但是预览使用也是没有任何问题。
最致命的在发布的时候,报错‘lcc’模块就直接发布终止了,后面就无法继续了。
所以问题,不在于普通脚本里面引用问题, 因为在编辑器和浏览的时候是正常的, 直接视为外部模块就可以了。最主要是 发布的时候, 为什么不和预览的时候一样的处理,应该就可以了。
还有不清楚为什么限制了在插件脚本里面使用 @menu 有这个必要吗?
给个demo出来吧
链接:https://pan.baidu.com/s/1b22Wepyzkc3SVb3nKSwdtg
提取码:ayng
这个框架系统是很贴近引擎的,在普通脚本里面不需要特殊处理,应该按照引擎库的引用方式即可。
当前,虽然会报外部模块, 但是使用在编辑器和浏览都是正常的。
主要问题就是怎么配置’lcc’ 和 引擎的’cc’ 在脚本中使用同样的处理方式, 这个模块和’cc’一样,是不需要去处理的。
还有就是限制 @menu ,如果没有特别原因的话,就是在限制3.x扩展的可能性,作为引擎不是应该扩展性越高越好吗。开发者可以能灵活方便的扩展,不知道是不是因为考虑到插件脚本里面扩展多了,用户找起来混乱麻烦,但是也不能因噎废食吧。