Cocos Creator v1.4.0 内测版发布帖(2月10日更新 rc.3)

性能优化加上很多新功能的 1.4 内测版本来了。

请大家使用测试版时一定要注意备份好自己的项目!

Cocos Creator v1.4.0-rc.3 内测版发布:

特别说明:增加了大量编辑器扩展文档和 API,插件商店已经开始测试

改动列表

v1.4.0-rc.3

  • [Spine] spine 事件回调参数 trackIndex 变更为 trackEntry 对象。spine 事件机制在 3.5 版本中变更,详情参考:http://zh.esotericsoftware.com/spine-api-reference#AnimationStateListener1
  • [Spine] 新增 findAnimation 接口
  • [Action] 修复了调用 Action 时节点变换无法正确更新的问题
  • [Engine] 修复了 Prefab 可能出现加载失败的问题
  • [Engine] 修复了以 dom 模式加载音频时回调错误导致加载中断的问题
  • [ProjectSetting] 修复了项目设置中 预览运行 面板无法显示的问题,修复了引擎模块设置无法正确保存的问题
  • [JSB] 修复部分转换函数可能被传入空指针导致崩溃的问题
  • [Animation] 修复了父节点和子节点上都有动画组件和 clip 时,子节点无法正确显示 clip 选择下拉菜单的问题
  • [Animation] 修复了双击节点之间的蓝色连线时会报错并导致后续点击事件失效的问题
  • [Console] 编译失败时,显示包括报错列的更详细的报错信息
  • [Engine] color.fromHEX 接口支持只传入 rgb 数据

v1.4.0-rc.2

  • [Spine] 修复了 SkeletonBatch 可能访问非法内存导致崩溃的问题
  • [Editor] 为 coffeescript 资源增加了 sourcemap,解决新建脚本时报错的问题
  • [Editor] 修复了登录信息过期后不能及时提示重新登录的问题
  • [EditBox] 修复初始字符在网页端无法显示的问题
  • [Engine] 修复了 cc.Color 设为红色时渲染不正确的问题
  • [Assets] 修复了按住 shift 多选资源时编辑器显示报错的问题
  • [ParticleSystem] 修复了粒子组件,加载后不会自动加载粒子资源的.png文件的问题
  • [Properties] 属性检查器增加 cc.Rect 类型控件支持
  • [Build] 修复编译过程中关闭构建窗口然后重新打开时的报错
  • [Assets] 修复了启动包括外部修改过脚本的项目时,不会触发自动编译的问题
  • [ProjectSetting] 增加按照项目设置模拟器分辨率的选项

v1.4.0-rc.1

  • [Engine] 合并 cocos2d-x v3.14 web 版优化,包括:
    • 减少 visit 的调用栈深度
    • 减少 onEnter/onExit/cleanup 的调用栈深度
    • 降低 ActionManager/Scheduler/EventManager 的内存使用
    • 降低 Color 内存使用
    • 优化 RenderCmd 和 SGNode 构造性能
    • 减少 updateProjectionUniform 调用
    • 优化 Vertex 数据计算性能
  • [Engine] 修复大量热更新问题,包括:
    • (重要)彻底隔离临时更新文件夹和本地缓存文件夹,避免前者失败时污染后者,在确认新版本更新完成时才会将临时更新文件夹合并到本地缓存文件夹中(不会删除旧的本地缓存文件)
    • (重要)绑定 Downloader file task 接口(不支持 data task)
    • (重要)压缩文件的解压逻辑前置到 fileSuccess 之前,保障解压成功才算是文件正确更新
    • 用 manifest 中的 size 字段来收集文件大小数据,更快获得准确的字节级进度
    • 修复 Android 断点续传支持和一些特殊情况下的更新 bug
    • 支持 manifest 间比较的 API:setVersionCompareHandle
    • 支持下载文件后的校验回调:setVerifyCallback
    • 支持设置更新时最大文件并发数 setMaxConcurrentTask
    • 保障 tempManifest 的正确保存,使得进度信息可以正确存储
    • 延迟文件请求到文件夹创建逻辑之后,确保路径正常
    • 读取 App Package 内部 manifest 时强制清空 search path,避免读取到缓存 manifest
  • [Engine] 修复了可能将加载的 mp4 视频文件按照音频解析导致的错误问题
  • [Engine] 修复了销毁带有 Missing Script 组件节点时的报错问题
  • [Prefab] 修复不自动刷新的 Prefab 在运行时触发资源加载的问题
  • [Loader] 修复 cc.loader._getReferenceKey 接口获取结果错误导致无法正常自动释放资源,也无法正常设置资源不可释放的问题
  • [Loader] 修复 LoadingItem.dependKeys 可能出现重复内容的问题
  • [Preview] 修复了场景重新编译后,预览时场景名出错的问题
  • [Editor] 修复了导入为插件的脚本文件路径不支持空格的问题
  • [Animation] 修复了修改动画资源后保存失败的问题
  • [Spine] 修复了 setStartListener 只能监听到 track 0 的事件
  • [EditBox] 修复了 landscape 模式下面输入的文字无法显示的问题
  • [Label] 修复了 BMFont 在启用场景延迟加载的时候报错的问题
  • [Label] 修复原生平台上 BMFont 在某些情况下导致不同的 Label 使用同样纹理的问题
  • [Label] 修复了系统字体 和 TTF 在 opacity 属性修改的时候会重新生成贴图的问题,提高性能
  • [Label] 修复了系统字体使用动态加载的方式去设置 ttf,会导致字体大小变化的问题
  • [Audio] 修复了在 iOS 平台设置声音音量时可能会导致音频不受控制的问题
  • [Audio] 修复了音频资源加载时的可能会出现请求数量增加的问题
  • [ParticleSystem] 修复了当粒子进行多次加载的时候,会出现当需要获取粒子时资源已经被清除了的警告
  • [Spine] 修复了动画播放完成后不能保持最后一帧状态的问题
  • [VideoPlayer] 修复原生平台播放在线视频时可能出现卡死的问题

v1.4.0-beta.10

  • [AnySDK] 增加内置 AnySDK 客户端
  • [Engine] 在原生平台使用新的软件音频解码库,解决在部分芯片上解码 mp3 和 ogg 音频时崩溃的问题
  • [Engine] 修复 AssetManagerEx 在热更新流程中的大量问题
  • [Engine] 提供原生 Downloader 的 JS 绑定
  • [Engine] 修复 sprite 旋转到特定角度时,如果约束框超出 viewport 范围,会整个被自动剔除的问题
  • [Engine] 修复实例化会引入 t1 之类的全局变量的问题
  • [Engine] 修复魅族系统浏览器无法开启 WebGL 模式的问题
  • [Engine] 修复嵌套 Mask 时使用 inverted 反向遮罩会出现显示错误的问题
  • [TiledMap] 修复重新打开场景时,地图中保存节点的顺序可能会错掉的问题
  • [Preference] 选择外部脚本编辑器的菜单增加「移除」按钮
  • [Build] 修复构建发布面板勾选 APP ABI ,在运行时未生效的问题
  • [Preference] 修复自定义C++引擎路径下没有模拟器文件夹时,无法重新选择内置引擎的问题

v1.4.0-beta.9

  • [Store] 添加插件商店,可以从主菜单的 插件/插件商店 进入,需要登录 Cocos 开发者帐号才能使用
  • [Doc] 添加大量插件开发工作流程文档
  • [DragonBones] 修复包含龙骨节点的场景勾选自动释放资源之后,重新进入场景龙骨渲染会显示黑块
  • [Toggle] 修复 Toggle 组件在调用 check 和 uncheck 函数时未发送 Component.EventHandler 的回调
  • [RichText] 增加描边支持,通过标签 <outline color=xxx width=xxx> 另外,outline 标签也支持 click 事件
  • [Spine] 升级 C++ 引擎中的 Spine runtime 到 3.5.35,和 JS 版引擎保持一致
  • [Assets] 修复超时带来的构建时 asset-db:query-assets 报错
  • [DragonBones] 修复组件的 Time Scale 属性在 native 不生效的问题
  • [ScrollView] 修复当ScrollBar的 size 和 scrollview 不相等时,ScrollBar 的表现错误问题
  • [Loader] 修复部分情况 raw assets 没有被正确设置类型的问题,对于带参数的 url,资源 id 应该是原始的 url,不应该对字符串进行修改
  • [Assets] 渲染层 AssetDB 模块增加接口 createOrSave,会在资源路径不存在的情况下创建资源,否则更新保存资源。
  • [ProjectSettings] 项目设置里添加 Canvas 默认分辨率和自适应 policy 设置
  • [CodeEditor] 修复内置代码编辑器中按 Ctrl+Z,主窗口也会接收撤销事件的问题
  • [Graphics] 修复 native 上画曲线的时候有可能导致崩溃的问题
  • [Properties] 修复点击组件标题栏右边的功能按钮(齿轮)时也会折叠属性的问题。
  • [DragonBones] 修复 dragonBones.CCSlot 的逻辑错误导致龙骨中的序列帧动画显示错误问题
  • [Engine] 修复 cc.instantiate 时会引入 t1 之类的全局变量问题
  • [Engine] 修复 Action 对象在新内存模型中没有被引用,导致动作对象在垃圾回收时可能被误删的问题
  • [Engine] 修复大量 AssetManagerEx 热更新问题

v1.4.0-beta.7

  • [Editor] 场景中组件脚本丢失时,现在会提供详细的脚本引用位置信息
  • [Builder] 修复 Xcode 中设置发布模式为 release 时编译报错的问题
  • [Engine] 更新构建 Mac 桌面应用时使用的 glfw 第三方库,修复 Canvas 组件同时勾选 Fit Height 和 Fit Width 时在 Mac 平台的显示问题
  • [Engine] 修复 EVENT_GAME_INITED 事件触发时,引擎仍未初始化完成,导致调用 cc.loader.loadRes 失败的问题
  • [Spine] 修复升级 Spine runtime 后事件机制无法正常工作的问题
  • [Spine] 修复 Spine 组件在更换 skeletonData 属性之后注册的事件监听器会丢失的问题
  • [Engine] 修复 JSB 环境下 XMLHttpRequest 没有正确返回错误到 JS 回调,仅提示在原生层的问题
  • [Scene] 修复保存场景时提示 TypeError: Path must be a string. Received null 的错误
  • [Label] 修复当排版模式设置为 SHRINK 时,用代码切换场景会导致卡死无法切换的问题
  • [Component] CCClass 子类方法和父类属性重名时现在会正确提示报错
  • [Prefab] 重命名 Prefab 资源后,实例化后的节点名现在也会跟着改变
  • [Prefab] 用户嵌套 Prefab 时会弹出警告,提示只有最上层的 prefab 会被保存,另外选中 Prefab 中的任何节点时,在属性检查器头部会显示所属 prefab 的名称
  • [Doc] 改善了文档导航,加入可折叠的左侧导航栏,加入手册文章搜索,加入编辑器扩展需要的一部分 API 文档

v1.4.0-beta.6

  • [Label] 增加了新的字体资源类型 LabelAtlas(艺术数字),和原来 cocos2d-x 引擎的 LabelAtlas 配置方法相同
  • [Editor] 为资源引用丢失报错增加详细的引用位置信息
  • [Prefab] 修复了复制 Prefab 中的节点时,两个节点会关联同一份资源中的索引问题
  • [Simulator] 模拟器菜单添加选项设置是否显示 FPS
  • [Sourcemap] 修复使用 Chrome 调试脚本时 sourcemap 源码内容错误的问题
  • [Animation] 修复退出 Animation 编辑时会弹出两次确认框的问题
  • [DragonBones] 修复 DragonBones 组件修改 armatureName 属性后之前添加的事件监听器丢失的问题
  • [Editor] 修复编译过程较长时容易出现 worker timed out 的问题
  • [Spine] 修复了使用 SGSkeleton.getBoundingBox 方法时出错的问题

v1.4.0-beta.5

  • [Spine] 升级 Spine 的 JS 运行时到 3.x 版本,支持 Mesh 显示
  • [Label] 支持位图字体和其他 Sprite 一起进行批量渲染,只需要把 bmfont 使用的贴图和其他 Sprite 用的贴图放在同一个自动图集配置路径下就可以生效
  • [Engine] 修复开启 Canvas 脏矩形渲染优化时,图像周围可能出现的黑边问题
  • [Engine] 通过从 release 版本剥离报错日志信息,和减少编辑器专用的代码,减少了约 80k 的引擎核心包体积
  • [DragonBones] 修复动画第二次播放时 blendMode 出错的问题
  • [Editor] 关闭编辑器架构内核对部分 GPU 的黑名单列表,修复版本升级带来的更多显卡不兼容编辑器 WebGL 渲染的问题
  • [Loader] 修复 cc.loader.loadRes 加载 atlas 后获取到的 spriteFrame 都只有一张图的问题
  • [Animation] 修复动画编辑器很多情况下无法正确保存动画的问题
  • [Widget] 修复所在节点缩放为 0 时,width 会变成无穷大的错误
  • [PageView] 修复 PageView 当拖到最后一页时,如果继续拖拽超过偏移值会滚动到第一页的问题
  • [Editor] 修复了在编辑器中通过代码创建一个扩展名为 txt 的资源会报错的问题
  • [Builder] 现在在构建流程会显示更详细的日志信息
  • [Builder] Web 平台发布时增加了内联 SpriteFrame 和强制合并初始场景资源 JSON 的选项,能够降低网络请求数
  • [Editor] 修复了切换布局后,属性检查器会不停快速切换,以及切换布局前的选择不会清空的问题

v1.4.0-beta.4

  • [Engine] 避免使用 https 加载资源时的贴图绑定错误
  • [Engine] 修复 loadRes 一个 prefab 后若资源还没拉取到,在下一个引擎 update 中 getRes 会得到错误的 prefab 的问题
  • [Engine] 修复了 cc.loader.load 请求失败时没有回调的问题
  • [Engine] 修复了加载 Prefab 时会出现反复加载同一个 JSON 资源的问题
  • [Engine] cc.Loader._cache 里使用资源的 url 索引资源,对于非 raw asset,url 在 AssetLibrary 中找不到的情况下,使用 uuid 作为索引
  • [Editor] 修复在偏好设置内设置 「步进数值」无效的问题
  • [Engine] 分离引擎内的日志和报错信息到外部文件中,打包 release 时不包括日志和报错信息字符内容,需要手动前往报错提示的 url 查找信息。

v1.4.0-beta.3

  • [DragonBones] 添加了 mesh 显示的支持
  • [Editor] 修复了图片路径中包含中文时,可能会导致导入失败的问题
  • [Engine] 修复了 iOS 平台上 AudioDecoder 编译报错问题
  • [Engine] 修复了切换场景后,SystemEvent 无法重新注册,导致事件失效的问题
  • [Engine] 修复了小米 note 等机型上使用 x5 内核浏览器还会出现闪屏的问题
  • [Build] 修复了构建为 release 版本时 sourcemap 报错的问题
  • [Scene] 修复了从控件库中拖控件到场景编辑器后 gizmo 无法响应拖拽的问题
  • [Properties] 优化 slider 控件的步长设置, type 是 integer 的时候设置 precision = 0
  • [ProjectSetting] 修复了项目设置数据无法保存的问题
  • [Animation] 修复了动画编辑器选择 clip 的 select 下拉菜单出现位置错误
  • [Preview] 修复了中文注释和 log 在 Chrome 上调试时会显示成乱码的问题
  • [Builder] 修复了使用 binary 模板构建出的 android 工程可能编译失败的问题
  • [Builder] 构建 web 平台时,加入渲染模式的选择
  • [RichText] 修复富文本使用自定义字体时,原生平台显示效果不正确的问题
  • [Engine] 现在位图字体文件也可以被场景预加载
  • [AutoAtlas] 优化合图,支持剔除当前文件夹没有被引用的图片选项
  • [Editor] 修复 UMD 脚本导入为插件后在编辑器中加载会报错的问题
  • [Engine] 修复场景资源自动释放时,BitmapFont 对应的字体文件不会被释放的问题
  • [Builder] 构建 release 时,编译 js 到 jsc 的时候现在会输出log 到 native log 文件

1.4.0-beta.2

  • [Debug] 新增使用 VS Code 调试网页版游戏的工作流程,需要在 VS Code 里安装 Debugger for Chrome 插件并执行 Creator 主菜单里的 VSCode 工作流->添加 Chrome Debug 配置
  • [Mask] 新增 Image_Stencil 模式,可以设置一个 SpriteFrame 来对子节点进行遮挡或剔除
  • [Animation] 修复了拖拽修改关键帧位置时鼠标锁死的问题
  • [Builder] 修复了使用命令行构建时,当前运行环境在项目中时会报错的问题
  • [Editor] 修复了 Windows 平台在非英语或中文系统上编辑器无法启动的问题
  • [Preview] 修复了启动预览后,编辑器内切换场景,无法再切换预览的场景的问题
  • [Extension] 插件里的场景脚本现在可以通过 window.require 来加载模块,并可以正确使用 this 来调用场景脚本里的成员方法
  • [Component] 修复 cc.Class 里属性的 default 直接设为构造函数时,编辑器下会提示全局变量被修改的问题
  • [Builder] 修复了构建原生工程时可能使用错误的 python 版本的问题
  • [Builder] 构建 iOS 和 Android 平台选择了 AnySDK 时,可以在构建面板里直接输入 AnySDK 相关参数配置
  • [Builder] 添加 --compile 命令行参数,支持使用命令行编译原生工程
  • [Preferences] 偏好设置的常规面板中加入新创建的 Prefab 是否自动同步的选项

v1.4.0-beta.1

  • [AutoAtlas] 现在自动合图里每张图片资源的 uuid 会保持不变
  • [Preferences] 增加了默认不对导入资源进行图片剪裁的选项
  • [Engine] 优化场景加载时的反序列化操作
  • [Extension] 添加 Editor.Scene.callSceneScript 接口,用于在插件中调用组件脚本和访问场景节点
  • [Assets] 保存场景、动画、prefab 资源时会自动将这些资源备份到项目工程的 temp/BackupAssets 目录中,并可通过资源管理器中右键菜单恢复到备份的版本
  • [Widget] 增加了 target 属性,可以指定一个非直接父级节点(可以是父节点的父节点)
  • [Spine] 修复了 Spine 数据验证失败时场景不能打开的问题
  • [Extension] 插件中可以声明一个 runtime-scripts 文件夹,其中的资源和脚本内容可以被项目访问到
  • [Editor] 在使用的自定义引擎版本和当前编辑器不兼容时,增加弹窗提示
  • [Scene] 优化场景面板的任务执行机制,避免多个任务同时执行带来的冲突和数据丢失的可能。
  • [Builder] 构建 windows 平台时增加指定 Visual Studio 版本的选项
  • [Engine] 对 instantiate 性能进行优化,除了提高运行时创建节点的效率外,也提高了编辑器里场景打开的速度
  • [Engine] 允许 cc.loader.getRes 和 releaseRes 传入类型参数
  • [Engine] 重命名 cc.loader.loadResAll 为 loadResDir,明确传入参数是一个文件夹的 url,增加 releaseResDir 接口用于释放整个文件夹的资源
  • [Editor] 更新控件库图标
  • [Builder] 修复构建出的 Android Studio 项目 icon 与其他平台不一致的问题
  • [Engine] 修复模拟器会加载非原生插件脚本的问题
  • [Preview] 为 Web 平台预览界面添加逐帧运行按钮
  • [Editor] 修复从场景中删除某组件后,从项目中删除对应脚本仍然会报错的问题
  • [Widget] 添加 updateAlignment 接口,用于手动刷新对齐
  • [Prefab] 修复 Revert Prefab 时,Button 的 clickEvent 的 target 会变成 missing 状态 的问题

有任何内测版问题请在本楼内反馈

后续内测版本会在顶楼持续更新。谢谢大家的支持。

2赞

spine crash的问题这个版本有处理吗?

新增插件接口的用法:

插件中支持访问场景脚本和节点

支持在 package.json 中添加 scene-script 字段来加载 scene script

{
  "scene-script": "scene-script.js"
}

scene-script.js 中需要这样来定义

module.exports = {
    testMessage: function (event) {
        var canvas = cc.find('Canvas');
        Editor.log('children length : ' + canvas.children.length);

        if (event.reply) {
            event.reply(null, canvas.children.length);
        }
    }
};

这里会把消息按照 {packageID}:{message} 的方式添加到 scene panel 的消息中

core 层 和 render 层都封装了消息可以通过 Editor.Scene.callSceneScript(packageID, message) 方式来调用方法发送消息传到 scene 中的 scene script 来执行方法

假设 package test-package 中 定义了 上面提到的 scene-script.js
那么可以在任何地方调用 Editor.Scene.callSceneScript(‘test-package’, ‘testMessage’) 来执行这个方法
参数和 ipc 参数形式一致,可以传回调

Editor.Scene.callSceneScript('test-package', 'testMessage', function (err, length) {
    console.log(`testMessage callback :  length - ${length}`);
});

插件中声明项目资源

插件通过在 package.json 文件中配置 runtime-resource 字段来 mount runtime 资源到 assetdb 中。配置的格式如下:

  "runtime-resource": {
    "path": "path/to/runtime-resource",
    "name": "runtime-res-name"
  }

最终在资源管理器中由插件 mount 的文件夹名称为 [packageName]-[runtime-resource.name]。且插件导入的资源文件夹为只读的。

会在后续版本修复

png图片的加载和内存释放
@nantas 1.4.0 beta测试 依然会有问题

build android报错

终于来1.4了,话说数字标签放在哪了???

我的愿望是:spine支持Mesh。减少加载时大量json文件请求。mask支持不规则图形。网页版本缓存控制。

不是说要支持物理引擎吗?这得等到什么时候才能支持啊

2赞

每次都出现?你看下这个文件存在么?

为啥不更新anySDK一键(渠道、登录、分享、广告、统计)打包呢?:joy:

请问可否把CCClass.js中的define()和declareProperties()两个函数挂到cc.Class下面?比如像这样:cc.Class._define和cc.Class._declareProperties。我的项目依赖这两个函数,目前我只能手动把CCClass.js和它的依赖拷贝进项目,稍作修改,才能用这两个函数。更新了1.4之后CCClass改了,又得再做一遍。如果能把这两个函数挂到cc.Class下面就好了。就像cc.Component._registerEditorProps一样。谢谢。

【BUG】Mac 10.12.2 鼠标右键-》 新建或者删除 菜单面板会闪现

有一点相同,,希望默认生产的json文件就不要了都能知道是默认的了,,,那程序也可以去默认啊

其次,碎图打包城atlas之后不用在为碎图还单独生成json了把(至少默认不用了),,这样会减少太多太多太多了,

顶楼上,同样在MAC下右键新建场景对话框会不断出现的问题

+1同样的问题。
我们的整个项目光atlas中spriteFrame的json就有3000多个,
这在一开始AssetsManager在遍历assets跟呼叫diff_map.find(key)就要花费5~6秒,若这边的json能合并会改善很多

希望能够将相关json在打包时转换为二进制,希望官方能够提供资源打包功能

追加,loadRes希望能在callback里面添加资源url参数

追加:希望Animaiton加入权重因子,比如说有个动画是scale从1改为2,当我权重为1的时候,是正常的,权重为0.5时,变成0.5到1