记录:错误记录(后续更新..)

TS篇

  • TypeError: Cannot read property ‘xxx’ of undefined
    出现场景:如果有同名脚本可能出现此问题。不论是否在不同文件夹
    解决方案:改名
  • TypeError: Object prototype may only be an Object or null: undefined
    出现场景:
  • 1.循环引用,a.ts 导入b.ts、 b.ts 导入a.ts
    **解决方案:**用dpdm模块排查或者手动排查
  • 2.父类脚本位置在子类脚本位置下方, 比如子类放在a文件夹, 父类放在b文件夹, 脚本排序是通过文件价字母顺序排序->脚本字母顺序排序, 那么子类脚本就在父类上
    **解决方案:**这时候只需要将父类置于子类上分即可,如果还有错请检查循环引用
  • Uncaught TypeError: xxx is not a constructor
    出现场景:工具/插件自动生成的脚本导出的类
    解决方案:Ctrl + S一次,如果不行就先随便打个字母再删除后再保存
  • TypeError: Cannot use ‘in’ operator to search for ‘enums’ in undefined
    出现场景:使用合并模块内的枚举
    解决方案:将枚举放在使用类之上,所以必须移出模块

VSCode篇

  • 每次更新或关闭Code报错,Code安装位置错误,应该在默认的C盘位置,也就是C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code

引擎篇

  • 2.3.2
  • 添加新节点后位置错乱: 检查是否使用过cc.director.pause()后没有在添加节点前cc.director.resume()
  • cc.instantiate克隆对象而不是预制体设置spriteFrame出错: 改用预制体

安卓打包

  • 错误信息
* What went wrong:
A problem occurred configuring project ':game'.
> Parameter specified as non-null is null: method com.android.build.gradle.internal.cxx.configure.JsonGenerationVariantConfiguration.<init>, parameter ndkVersion

检测打包选择的android版本号,查看ndk目录是否有相同的版本
一般使用最新的ndk和sdk就可以解决,最好用android stdio下载

  • 错误信息
* What went wrong:
Execution failed for task ':game:externalNativeBuildReleaseFeature'.
> Build command failed.

检查路径是否包含特殊字符或者过长, 建议把项目文件夹放在根目录下并且项目文件名不要包含一些特殊字符,然后删除build文件夹重试

8赞

##引擎篇

  • object already destroyed
    出现场景:destory节点后报错
    解决方案:检查此节点上挂载的组件是否调用过Object.defineProperty, 如果有,需要在 onDestory回调中加入 delete xxx.xxx;
  • Download text failed
    出现场景:原生环境
    解决方案:原生环境无法直接使用cc.loader.load下载文本资源,需要改为xmlhttp

##安卓打包

  • 如果在更换api级别后出现NDK_PROJECT_PATH= NULL这样的错误,请尝试删除build文件夹后重试
  • 没有找到java版本错误,一般是gradle版本过高
    ##苹果打包
  • 没有找到库文件,一般是svn上传的时候忽略了*.a文件,重新上传打包即可

给楼主点赞

TS篇

  • 脚本怎么都挂载不上
    出现场景:在组件脚本引用了类似下面这种脚本(在instance的过程又去调用了instance,造成循环)
module A {
    export class B {
        public o = A.B.instance().func();
        public instance() { ... }
        public func() { ... }
    }
}

解决方案:
改为如下

module A {
    export class B {
        public o = this.func();
        public instance() { ... }
        public func() { ... }
    }
}
1赞

引擎篇

引擎篇

  • 2.4.3
  • 物理引擎卡死:box2d内死循环
    • 原因:在碰撞监听内对碰撞体进行了修改
    • 解决方案:将碰撞监听内的函数放在最后帧执行,跳过对物理引擎的影响,例:setTimeout(()=> { … }, 0);
  • 龙骨合批无效:
    • 原因:龙骨内使用了色彩混合选项
    • 解决方案:让美术去掉色彩混合,但是会影响展示效果,看使用情况取舍
  • 实例化的碰撞体无效
    • 原因:引擎bug
    • 解决方案:设置碰撞体的 enabled 为 false 后再设置为 true 重新激活。
1赞

请问下这个xmlhttp指的啥

版本:2.4.5
环境:chrome浏览器

TS篇

  • 二次进入场景执行某个对象的函数时 this 对象变成了空 Object,用 call(this) 调用也无法改变 this
    • 原因:tsconfig 和 jsconfig 内的 target 不一致
    • 解决方案:同步 tsconfig 和 jsconfig
    • 吐槽:移植bundle时发生,问题太奇怪,找了好一会儿才发现是移植的项目tsconfig和jsconfig不一致导致的问题

引擎篇

  • 引用的internal内置bundle资源展示不了(Uncaught TypeError: Cannot read property ‘length’ of null [0]_p.updateSubImage@jsb-adapter)
    • 原因:开启了动态图集
    • 解决方案:
      1. 关闭动态图集
      2. 将引用internal内置bundle的节点资源替换
1赞

打包

  • Could not receive a message from the daemon.
    • 解决方案:重启电脑

引擎

编辑器

版本:3.8.0 公测