Cocos Creator v2.4.0-rc.9 测试帖(正式版已发)

这个目前不影响使用吧?我们可以在下载失败后删除这些文件

请教一个问题。文档里面说了Asset Bundle优先级的问题。
“当文件夹设置为 Asset Bundle 之后,会将文件夹内以及文件夹外部依赖的资源都合并到 Asset Bundle 中。”
这里的外部依赖资源包括代码吗?也就是说一个文件夹被设置为Asset Bundle,里面如果有一个场景或者预制体绑定了一个脚本文件A,而这个脚本文件A又用到了另外一个文件夹中的脚本文件B,这种情况是否会去先加载这个脚本文件B?

Bug复现视频.zip (1.3 MB)

好的谢谢 asd

不包括脚本诶,脚本就是严格按照在不在文件夹下来判断,没有考虑脚本的依赖关系,所以如果 A 脚本require 了 B 脚本,那么只能在加载 A 之前,手动把 B 加载了

之后部分平台会进行压缩,毕竟要跨web和原生平台,不是所有平台支持压缩的

好的,谢谢。

v240.zip (816.1 KB)

window 系统.

bug2
在assets/script/ 目录下 新建 login.js
然后再 start 代码 添加 console.log(“login scripting”). 回到编辑器 ,会出现3个 login.js 文件图标

感觉资源管理流程清晰多了。另外手动加载资源需要自己管理引用计数(因为js没有运算符重载),是不是可以通过使用get/set的方式赋值来代替直接赋值从而实现自动增加引用计数?在节点destory时自动减少相关资源的引用计数?这样管理起来更方便来。

好的感谢,我这边测试看看

bug1 是因为脚本重名的问题,项目中是不允许重名的,会限制
bug2 已经记录了,会尽快修复

bug 1
新建时 如果发现全局其他目录存在相同名称脚本,自动重命名.
就跟目前在同一目录新建重名脚本逻辑一样.

对的,后面会改成这样的机制

感谢你的建议,这个有考虑过的,但最后我们放弃了这个方案,具体原因:

  1. 所有赋值的地方都需要改成 getter 和 setter, 这个需要改动的地方非常多,容易漏,并且会影响性能
  2. 有些地方getter和setter无法处理,比如当你使用数组或者对象存储资源时。setter无法处理这种情况。比如:
class Test extents cc.Component {
      @property
      public myAssets: Array<cc.Texture2D> = [];

      public myAssets2: any = {};
}

// 其他组件中
this.node.getComponent(Test).myAssets[0] = texture;
this.node.getComponent(Test).myAssets2['background'] = texture;

这两种情况下没办法使用 setter。除非限制整个引擎和用户脚本不能使用数组或者对象来保存资源,但显然这样有点没必要了。最理想的方式还是赋值运算符重载,但不幸地是ts和js目前都不支持,所以选择让用户自行管理动态加载进来的资源

问题1:打开即报错


这个小秘书我好像没用过呀?

问题2:改名报错了


已经存在?应该不会吧,资源管理器就这么点东西。

你改成什么名?(资源同目录下是无法同名的)后面的报错没看到

是和我说话么?我随便拖进来3张图片,分别改成1、2、3,三次改名都报错了,错误都是一样的。
XXX is alreday in use by …

后续是否有考虑加入x86 64位?

是 Windows 吗?
我 mac 测试是正常的

设置成小游戏子包确实可以成功构建,但是勾选那个初始场景分包构建,还是会有同样报错