cocos creator 3.x遇到的一些问题和解决办法

这篇具有很好参考价值的文章主要介绍了cocos creator 3.x遇到的一些问题和解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、场景文件损坏问题。

现象:一次异常死机,关机重启后,场景文件(cocos creator 3.6.2创建)无法打开,涉及几天的工作,如果无法恢复,损失巨大!感觉太夸张了。

分析:认真分析了场景文件格式,是json格式(可以用visual studio code打开),层次不多,以id进行关联,尝试删除一些小节,结果发现还是打不开,但是提示不一样了,经过进一步分析,终于找到原因所在,一个json子数组出现了null节点,内容保存的是null,导致在解析时,无法正确读取数据。最后,删除此null节点,故障排除。类似故障可以同样处理,备份后尝试删除一些异常节点。

结论:1、cocos creator毕竟是开源软件,系统完备性还是比较差的,bug需要不断修改。导致机器死机很多次了。日常情况下macbook pro几乎都不用重启机器的,但cocos creator平均让我一天启动几次,而且都是硬关机。

2、场景文件采用json格式比较合理,至少给了分析的可能,如果加密或者其他类型格式,简直就无法分析了;

3、场景文件上下级关联采用id方式,较好解决了json过多层级导致太过复杂的问题;

4、还需要继续学习,目前单一场景感觉最后文件太大,不利用团队开发和模块化,应该有更好的处理方式。

二、position问题

在设计设置窗体时花了很多时间。要区分 boundingbox,contentsize,worldposition几个类型地址的差异。

1、event中getlocaiton,getuilocation位置的差异。一个是screen位置,一个world位置。

2、positon通常是针对上级节点的偏移位置;worldpositon是针对屏幕的;

3、boundingbox是在屏幕上的矩阵区域,contentsize是内容大小(可能受缩放影响与实际boundingbox有较大差异)

4、具体关系建议看调试状态代码。

三、引入外部模块

引入模块导致undefined报错,花了一天时间才解决。

比如测试引入uuid功能时,需要导入外部模块,过程是

1、进入visual code的命令行;

2、运行npm install uuid-random 完成安装

3、检查node_modules下uuid-random文件

4、程序导入使用:

两种成功方法

(1)使用$符号:

文件头:import * as $uuid from 'uuid-random';

引用部分:this._teamID = $uuid.default();

和:$uuid.default.bin().toString();

这种方法会提示语法错误,但可以正常运行;

(2)正确做法,修改tsconfig.json,增加缺省导入为真

  "compilerOptions": {
    "allowSyntheticDefaultImports": true
  }

文件头及使用:

import uuid from 'uuid-random';
//代码使用
this._teamID = uuid();

5、打包出现错误

提示:

[Build] [build-script]ModuleNotFoundError: (i18n needed)resolve_error_module_not_found: {"specifier":"crypto","parentURL":"file:///Users/xxxxx/xxxx/xxx/node_modules/uuid-random/index.js"}

这句话很容易混淆,以为找不到的是index.js文件,实际上是crypto.js文件找不到

解决办法:

在 index.js文件中将require('crypto')删除即可

6、引入外部js文件格式

1)具体看uuid.js和encryptjs.js 示例,增加了.d.ts文件

(2)import写法很重要,如:

import crypto from "./encryptjs.js"

如果js文件中又引用了其他文件,很多时候很难通过;

(3)必须注意在浏览器通过,不意味原生平台可以通过,必须仔细测试。

(4)因为ts检查严格,而js不严格,调试可能出现代码错误,需要修改。如encryptjs.js文件中 增加 c3变量定义和初始化值设定。

7、安卓证书申请过程

(1)keytool -genkey -alias xxxxx -keyalg RSA -keysize 2048 -validity 36500 -keystore xxxx.keystore

-alias 之后 跟随您自定义的别名;请输入英文

-keysize 默认2048

-validity 默认36500,证书有效期100年,您可以根据自己时间节点定义,比如365,代表有效期365天;

-keystore 自定义文件名.keystore 自定义的文件名,请输入英文

(2)密码 xxxxxx,名字:xxx

CN=xxxx, OU=xxxx xxxx, O=xxxx xxxx, L=Chengdu, ST=Sichuan, C=CN

(3)最后生成xxxx.keystore 签名文件

8、安卓重新签名发布

导致安装到手机无法成功,原因是已经安装了一个同名应用(其实就是签名不同),只有将原来应用删除方能继续安装。

9、同步加载json资源

原生采用load方式,必须异步,很多时候,希望简化逻辑,同步加载json资源,怎么办?

采用ts代码中属性增加jsonasset属性方式,在编辑时将需要的json文件拖到对应属性即可,然后代码中直接访问,实现同步。例如:

    //配置文件同步加载
    @property(JsonAsset)
    public preLoadConfig: JsonAsset = null;

四、缺省浏览器启动错误

现象是cocos creator 3.7启动后,运行浏览器预览程序,本来应该是chrome但启动了safari。这个是3.7的bug,下个版本估计会修复,之前的版本也没有类似错误。

解决办法:

很简单,每次启动cocos creator后,点击菜单->cocos creator ->设置->程序管理器->默认浏览器 点击一下即可,无需修改,退出菜单,你会发现启动正确了。

比较遗憾的是这个bug导致每次启动cocos creator 都会重复一遍这个操作。

下面是我用cocos creator 3.7.1开发的微信小游戏,欢迎使用:文章来源地址https://www.toymoban.com/news/detail-454124.html

cocos creator 3.x遇到的一些问题和解决办法

到了这里,关于cocos creator 3.x遇到的一些问题和解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cocos Creator问题汇总

    [Window] Cannot read property ‘cameraPriority’ of null node.on(Node.EventType.TOUCH_END, this.onBlockClicked, this); 解决 :监听的时候,node节点上必须有UITransform组件 Camera priority error - Cocos Creator - Cocos Forums 新建的prefab在运行的时候ui不显示,只能看到按钮上的label文本内容。 解决 :检查是否有C

    2024年02月13日
    浏览(38)
  • Cocos Creator3.8 项目实战(二)cocos creator编辑器中绑定事件引发的bug解决

    问题描述: 编辑器里面多个按钮绑定同一个脚本,并配置事件,脚本中有其他消息监听,引起逻辑混乱。 问题原因: 编辑器里面多个按钮绑定同一个脚本, 每次绑定一个按钮事件,就会导致加载一次脚本 ,如上绑定了多个按钮的事件,脚本也就被加载多次,导致初始化接

    2024年02月07日
    浏览(51)
  • QT5 creator创建项目移植VS2015时一些问题的解决方案(MSB307错误、.ui无法编译)

    将QT5项目移植VS2015工程的方案中,我目前体验过的最便捷的一条路线是: 1.利用QT5 Creator创建项目(不需要进行界面设计),得到XXX.h /XXX.cpp /XXX.ui (暂时不需要编译自动生成的ui_XXX.h); 2.复制以上文件到VS工程源码目录下,.ui与头文件目录相同,并进行CMAKE编译、项目生成(

    2024年02月15日
    浏览(49)
  • 解决 git clone 时遇到的一些问题

    在使用 git clone 时,出现了以下报错: GnuTLS recv error (-110): The TLS connection was non-properly terminated. 依次输入以下代码: 然后再次使用 git clone 发现可以正常下载了。 输入以下两行代码解决:

    2024年02月16日
    浏览(54)
  • 工作遇到问题与解决办法(一)

    父 孩子 startPage()只对该语句以后的第一个查询 (Select) 语句得到的数据进行分页。 多选 js 根据用户名更新下拉框 组件 前端:url请求设置没有token,白名单添加url 后端: controller层接口设置无权限访问,权限config类设置url匿名访问 面包屑 父组件 表单一行占三个 计算data中的

    2024年02月14日
    浏览(36)
  • Mythril测试智能合约遇到的一些问题与解决方法

    由于笔者最近在做智能合约相关的实验,使用了Mythril工具来检测智能合约,并在使用的过程中遇到了一系列的问题,这里给大家一点建议。   其中Mythril检测智能合约时的合约缺陷分类如下所示 SWC ID:116----------表示该漏洞的分类编号 Severity:Low----------表示该漏洞的严重程度

    2024年02月01日
    浏览(49)
  • 使用Yolov7遇到的一些问题的解决方法

    我在使用yolov7中遇到了一些问题,通过查询相关的资料和网站将其一个一个解决了。首先遇到的第一个问题就是cuda的内存不足,报错内容如下所示: 通过分析它主要有以下三种原因。 应该有三个原因 GPU还有其他进程占用显存,导致本进程无法分配到足够的显存 缓存过多,

    2024年02月08日
    浏览(46)
  • docker matlab安装时遇到的一些问题及解决方法

    朋友需要帮忙用服务器资源跑个matlab程序 。 但我不用matlab,服务器上没有matlab的环境,于是想到了用docker. 网上搜到是有这三个镜像 : mathworks/matlab mathworks/matlab-deps mathworks/matlab-deep-learning 朋友就是算个简单的东西 ,于是我选了第一个。 拉镜像需要点时间 最开始是bash里面

    2024年02月05日
    浏览(39)
  • slurm安装遇到的问题以及解决办法

    1、如何 初始化分区(节点) 状态(将drain状态转为idel) sudo scontrol update NodeName= roota-X299-UD4-Pro State=RESUME 2、如何 删除节点上的任务 (占用的和申请中的) (149条消息) SLURM 节点状态总是drained问题_kongxx的博客-CSDN博客_slurm drain scancel 16(进程号) 3、查看分区信息和节点信息 查看

    2024年02月03日
    浏览(46)
  • 微信小程序遇到的一些问题及解决方法(设备安装)

    1)、byte数组 2)、将byte数组转换为字符串 3)、将字符串转换为byte数组 4)、在Vue中使用byte数组。例如,我们可以使用axios发送包含byte数组的POST请求 1)、路由传参 2)、本地缓存传参 3)、全局变量传参 4)、URL传参 Viewer 下载地址: Viewer gitee Viewer github 1)、拿到所有节点 var zTree =

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包