cocos开发QA

news2024/11/5 17:24:48

目录

    • TS相关
      • foreach循环中使用return
      • 循环延迟
      • 动态获取类属性
    • Cocos相关
      • 属性检查器添加Enum属性
      • 实现不规则点击区域
      • 使用cc.RevoluteJoint的enable激活组件无效
      • 本地存储以及相关问题
      • JSON.stringify(map)返回{}
      • 数据加密
      • 客户端复制文本
      • 使用客户端方法
      • 热更新
      • 'LabelOutline.color' is deprecated. (Please use Label.outlineColor instead.)
      • 音效在浏览器正常播放,在安卓上无法播放
    • 编辑器相关
      • 引擎升级后,VScode代码不同步
      • 引擎升级后,tsconfig.json报错
    • 其他
      • 删除字体显示“文件已在System”中打开
      • AndroidStudio

TS相关

foreach循环中使用return

就是一个简单的循环查找,用了foreach
发现无论查没查到,返回结果都是null

list.forEach(v => {
     if (v.tp == tp) {
         return v;
     }
 });
 return null;

原来一直遗漏了这个知识点:
foreach循环中使用return不会终止循环,只会在当次循环中跳出
其他循环是可以终止的

循环延迟

希望实现的功能是:有两句话,希望第一句话输出之后等一段时间再说第二句话。

就需要将for和setTimeout结合使用
正常setTimeout放到for中获取到的i只会是最终数值,就需要使用立即执行函数进行传递

for (let i = 0; i < lang.content.length; i++) {
    (function (i) {
        setTimeout(function () {
            console.log(i);
        }, 500 * i);
      })(i);
}

动态获取类属性

以前一直是使用this["btn_" + data.type];类似这样动态获取属性,但ts中类型判断导致报错↓
元素隐式具有 “any” 类型,因为类型为 “string” 的表达式不能用于索引类型 “noticeViewComComp”

将动态获取的key声明为this中属性的类型
let key = ('btnSp_' + data) as keyof typeof this;
this[key];
(但这样是不是不太好)

Cocos相关

目前用的版本是 2.0 2.4

属性检查器添加Enum属性

普通添加显示为数字,需要显示为下拉选择框
在这里插入图片描述

@property({type:cc.Enum(DirectionEnum),tooltip:"方向"}) direction: DirectionEnum = DirectionEnum.VERTICAL;

实现不规则点击区域

需要实现例如下图中白框内的点击事件,普通node只能是正矩形
在这里插入图片描述

目前只能使用不规则碰撞组件来实现,监听TOUCH_END事件
注意:节点大小要大于碰撞体区域,不然无法点击

使用cc.RevoluteJoint的enable激活组件无效

制作中需要将cc.RevoluteJoint组件enable为false后进行激活j.enable = true但是结果是可以挂上但是无支撑时会因重力掉下,和正常的cc.RevoluteJoint对象进行比较发现其_joint(好像是这个名)属性为空

当将未激活的cc.RevoluteJoint组件使用enable激活后需要j.apply();

本地存储以及相关问题

需要本地存储可以用cc.sys.localStorage.getItem()cc.sys.localStorage.setItem()

但是,
存储后拿取map类型的数据,就变为了Object类型,用不了set、get方法

目前解决方式是需要转一下
使用ES8:object.entries将object变为键值对数组new Map(Object.entries(obj))
但我用的不是ES8,就得循环去放入了

objectToMap(obj: object): Map<any, any> {
    let map = new Map();
    Object.keys(obj).forEach(key => {
        map.set(key, obj[key]);
    });
    return map;
}

JSON.stringify(map)返回{}

如上存储数据需要将数据转为字符串,但发现map转完就变成空对象了=_=

所以想用JSON.stringify处理Map时要先将Map类型转为Object

mapToObject(map: Map<any, any>): Object {
    let obj = {};
    map.forEach((v, k) => {
         obj[k] = v;
     });
    return obj;
}

也可以这么转

const obj = [...map.entries()].reduce((obj, [key, value]) => (obj[key] = value, obj), {})

数据加密

需要用的时候可以研究下[这篇帖子](https://blog.csd
n.net/qq_24726043/article/details/134082473?spm=1001.2014.3001.5501)

客户端复制文本

需要复制文本粘贴到微信

if (JSB) {
    try {
        native.copyTextToClipboard(str)(Ljava/lang/String;)V", u.invitation_code);
        oops.gui.toast("复制成功")
    } catch (error) {
    	oops.gui.toast("复制失败")
    }
}

使用客户端方法

可以看文档
调用native的原生接口

热更新

打包步骤:

  1. 确保\assets\resources目录下的config.json中服务器地址配置正确(httpServer字段)
  2. cocos中打开构建发布面板,首次构建需要导入配置文件,已有配置的直接双击打开配置即可
  3. 确保填入正确的资源地址与版本号
  4. 点击“ 构建 ”开始构建
  5. 等待期间可以看下\assets\resources目录下的 project.manifestversion.manifest中的资源地址是否与填写的一致
  6. 等待构建完毕,如上一步一致则跳过第7步
  7. 将构建后的\oops_framework_remote\android下的两个manifest文件复制替换到\assets\resources目录下,再次构建项目,等待构建完毕
  8. 将构建后的\oops_framework_remote\android下的上一版本文件删除,只保留 本次版本文件两个manifest文件
  9. 压缩\oops_framework_remote下的android文件夹
  10. 登录发布地址并进入相应目录上传压缩文件
  11. 将原android文件夹删除,解压缩刚刚上传的文件
  12. 将压缩文件删除
  13. 完成

‘LabelOutline.color’ is deprecated. (Please use Label.outlineColor instead.)

cocos v3.8.3

发现使用<outline></outline>标签的richtext就会提示
看了帖子,应该是官方richtext组件中引用的加描边的方式还是老的,所以开发者无法解决。。。

音效在浏览器正常播放,在安卓上无法播放

在这里插入代码片

编辑器相关

引擎升级后,VScode代码不同步

cocos引擎升级后,项目升级,
提示脚本需要更改一些已弃用语法(如node.rotation改为node.angle)
但在vscode中报错飘红,cocos运行正常

在cocos引擎中,选择 开发者-VScode工作流-更新VScode智能提示数据

引擎升级后,tsconfig.json报错

在这里插入图片描述

目前原因不明
exclude添加"dist", "**/*.js"后重启vscode,无报错
再复原后重启vscode还是不报错(欠重启?)

其他

删除字体显示“文件已在System”中打开

已经将vscode和cocos都关了,还是删不了
在这里插入图片描述

是因为文件打开了预览 =_=‘’
在查看里关掉就好了

AndroidStudio

下载gradle缓慢或者直接报错
修改proj --> gradle --> wrapper --> gradle-wrapper.properties
distributionUrl配置如下修改

distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.5-bin.zip

地址:
https://mirrors.aliyun.com/macports/distfiles/gradle/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2231498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据新视界 -- 大数据大厂之 Impala 性能优化:数据存储分区的艺术与实践(下)(2/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

记第一次本地编译seatunnel源码

拉取代码 git clone https://github.com/apache/seatunnel.git 使用版本 我们生产环境用的是2.3.5版本&#xff0c;所以基于2.3.5-release分支代码进行编译。 maven package过程 遇到的第一个问题&#xff1a;‘com.sun.tools.javac.tree.JCTree com.sun.tools.javac.tree…

6.1、属性动画

使用显式动画产生布局更新动画 1.旋转动画 只修改对应的属性 rotate({angle: this.angle}) 即可达到效果 动画效果 对应实现代码 @Entry @Component struct AnimationPage {@State angle:number = 0aboutToAppear() {

串口屏控制的自动滑轨(未完工)

序言 疫情期间自己制作了一个自动滑轨&#xff0c;基于无线遥控的&#xff0c;但是整体太大了&#xff0c;非常不方便携带&#xff0c;所以重新设计了一个新的&#xff0c;以2020铝型材做导轨的滑轨&#xff0c;目前2020做滑轨已经很成熟了&#xff0c;配件也都非常便宜&#x…

Git在码云上的使用指南:从安装到推送远程仓库

目录 前言&#xff1a; 1、git的安装 1.1.Linux-centos环境下安装 1.2.Linux-ubuntu环境下安装 2.创建Git本地仓库 3.配置Git 4.认识⼯作区、暂存区、版本库 5.添加文件 5.1.git命令 5.2.commit命令 6.远程操作 6.1.新建远程仓库 6.2.克隆远程仓库&#xff1a; 6…

GESP4级考试语法知识(冒泡排序)

冒泡排序参考程序&#xff1a; #include <iostream> using namespace std; const int MAXN10001; int main() {int n,i,j;float a[MAXN];cin>>n;for(i1;i<n;i)cin>>a[i]; //输入n个数bool ok;for(in;i>1;i--){oktrue; //判断是…

无人机场景 - 目标检测数据集 - 夜间车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;无人机场景夜间车辆检测数据集&#xff0c;真实场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如夜间无人机场景城市道路行驶车辆图片、夜间无人机场景城市道边停车车辆图片、夜间无人机场景停车场车辆图片、夜间无人机场景小区车辆图片、夜…

重学SpringBoot3-整合 Elasticsearch 8.x (一)客户端方式

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 这里写目录标题 1. 为什么选择 Elasticsearch&#xff1f;2. Spring Boot 3 和 Elasticsearch 8.x 的集成概述2.1 准备工作2.2 添加依赖 3. Elasticsearch 客户端配置方式…

动态规划应该如何学习?

动态规划如何学习 参考灵神的视频和题解做的笔记&#xff08;灵神YYDS&#xff0c;以后也都会用这套逻辑去思考&#xff09; 枚举选哪个&#xff1a; 动态规划入门&#xff1a;从记忆化搜索到递推_哔哩哔哩_bilibili 746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&a…

从零开始构建 ChatGPT

今天&#xff0c;我们要介绍的是一个名为 LLMs-from-scratch 的 GitHub 项目&#xff0c;它由开发者 rasbt 精心打造&#xff0c;旨在一步步教你如何使用 PyTorch 从零开始实现一个类似 ChatGPT 的大型语言模型&#xff08;LLM&#xff09;。 这是一个教育性质的开源项目&…

音视频听译:助力多维度沟通与发展的大门

在全球经济一体化的大背景下&#xff0c;企业之间的跨国合作愈发频繁。在商务会议、谈判和产品演示等活动中&#xff0c;语言的多样性成为了一大挑战。而音视频听译服务能够将不同语言的音频准确转换为目标语言文字&#xff0c;确保信息的精准传达&#xff0c;避免因语言障碍引…

向量模型Jina Embedding: 从v1到v3论文笔记

文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相…

为啥学习数据结构和算法

基础知识就像是一座大楼的地基&#xff0c;它决定了我们的技术高度。而要想快速做出点事情&#xff0c;前提条件一定是基础能力过硬&#xff0c;“内功”要到位。 想要通关大厂面试&#xff0c;千万别让数据结构和算法拖了后腿 我们学任何知识都是为了“用”的&#xff0c;是为…

AI打造超写实虚拟人物:是科技奇迹还是伦理挑战?

内容概要 在这个科技飞速发展的时代&#xff0c;超写实虚拟人物仿佛从科幻小说中走进了我们的日常生活。它们以生动的形象和细腻的动作&#xff0c;不仅在影视、广告和游戏中吸引了无数目光&#xff0c;更让我们对AI技术的未来充满了期待和疑惑。这些数字化身在逼真的外貌下&a…

React基础大全

文章目录 一、React基本介绍1.虚拟DOM优化1.1 原生JS渲染页面1.2 React渲染页面 2.需要提前掌握的JS知识 二、入门1.React基本使用2.创建DOM的两种方式2.1 使用js创建&#xff08;一般不用&#xff09;2.2 使用jsx创建 3.React JSX3.1 JSX常见语法规则3.2 for循环渲染数据 4.模…

20241102在荣品PRO-RK3566开发板使用荣品预编译的buildroot通过iperf2测试AP6256的WIFI网速

20241102在荣品PRO-RK3566开发板使用荣品预编译的buildroot通过iperf2测试AP6256的WIFI网速 2024/11/2 14:18 客户端&#xff1a;荣耀手机HONOR 70【iPerf2 for Android】 服务器端&#xff1a;荣品PRO-RK3566开发板 预编译固件&#xff1a;update-pro-rk3566-buildroot-hdmi-2…

【启程Golang之旅】并发编程构建简易聊天系统

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…

【JavaSE】java对象的比较

文章目录 元素的比较基本类型的比较对象的比较 如何进行对象比较重写equals方法基于Comparble.compareTo的比较基于Comparator.compare的比较区分Comparator和Comparable 在PriorityQueue中比较的体现 元素的比较 基本类型的比较 在Java中,基本类型可以直接进行大小的比较 //…

多SpringBoot项目同进程下统一启动

1.背景 使用SpringBoot技术栈进行REST HTTP接口开发服务时&#xff0c;一般来说如果模块较多或者涉及多人协作开发&#xff0c;大家会不自觉的将每个模块独立成一个单独的项目进行开发&#xff0c;部署时则将每个服务进行单独部署和运行。服务间的调用则通过FeignClients&…

lvgl

lvgl 目录 lvgl Lvgl移植到STM32 -- 1、下载LVGL源码 -- 2、将必要文件复制到工程目录 -- 3、修改配置文件 将lvgl与底层屏幕结合到一块 -- lvgl也需要有定时器,专门给自己做了一个函数,告诉lvgl经过了多长时间(ms(毫秒)级别) 编写代码 lvgl的中文教程手册网站…