当前位置: 首页 > news >正文

【cocos creator 3.x】cocos creator2.x项目升级3.x项目改动点

1、基本改动

基本改动:去掉了cc.,改成在顶部添加导入
项目升级时候直接将cc.去掉,根据提示添加引用

node只保留position,scale,rotation,layer
其余属性如opacity,如果需要使用需要在节点手动添加UIOpacity组件
在这里插入图片描述

3d层和ui层分开展示,ui层必须在Canvas下,如果需要在3d层显示ui参考:https://blog.csdn.net/K86338236/article/details/146573306

粒子和3d方面完善了很多,建议有相应需求的项目升级
注意3.5.5以上shader格式和以下3.0.0-3.5.5版本格式不同,需要重写

2、部分属性获取方式改变:

rotation:
编辑器内显示的rotation其实是eulerAngles
代码赋值用:

this.node.setRotationFromEuler(v3(0, 0, 0))

position:

this.node.setPosition(v3(0, 0, 0))

坐标转换:convertToNodeSpaceAR,convertToWorldSpaceAR
目前可以直接赋值和获取世界坐标:

this.node.getWorldPosition()
this.node.setWorldPosition(v3(0, 0, 0))

width,height,anchorX,anchorY:

node.getComponent(UITransform).width
node.getComponent(UITransform).height
node.getComponent(UITransform).anchorX
node.getComponent(UITransform).anchorY

opacity:

node.getComponent(UIOpacity).opacity

color:

node.parent.getComponent(Sprite).color
node.parent.getComponent(Label).color
node.parent.getComponent(RichText).fontColor

3、方法变化:

  • 计算两点距离
p1.sub(p2).mag() -> Vec3.distance(p1,p2)
  • 浅拷贝:
    直接加.clone()
this.node.getWorldPosition().clone()

加载模块:基本没变

        assetManager.resources?.load(path, AudioClip, (err, clip) => {//路径,类型,回调if (err) {console.warn(err)return}//处理加载的资源})
  • tween:官方文档

使用例子:
支持各种带数值的属性,包括string,fillRange等

    let tweenDuration: number = 1.0;// 缓动的时长let action = tween(this.node).to(tweenDuration, { position: v3(0, 10, 0) })// 这里以node的位置信息坐标缓动的目标 .to(tweenDuration, { position: v3(0, 10, 0) },{onUpdate: (target, ratio) => { },//当前缓动的进度,值可能为空progress: easing.sineOutIn//缓动速度变化函数})// 这里以node的位置信息坐标缓动的目标 .call(() => {//插入函数}).delay(1)//延时1秒.start();//移除节点所有动画
Tween.stopAllByTarget(this.node);
  • 简易全局事件系统:

    director.on(“attack”, this.onAttack, this);
    director.off(“attack”, this.onAttack, this);
    director.emit(“attack”);

  • 音频:官方文档
    改动较大,使用audioEngine的需要重写了
    Cocos Creator 3.x 移除了 v2.x 中的 audioEngine API,统一使用 AudioSource 组件播放音频。

4、常见问题:

  1. 粒子层会被ui层遮挡:
    给粒子节点添加UIMeshRenderer和UITransform,scale设置为0.01
    或者新建一个相机,层级比主相机高,只渲染粒子层,相机ClearFlags需要改为DEPTH_ONLY
http://www.xdnf.cn/news/4033.html

相关文章:

  • 士兵乱斗(贪心)
  • 前端api(请求后端)简易template
  • Python高级爬虫之JS逆向+安卓逆向1.5节: 控制结构
  • docker harbor私有仓库登录报错
  • Ubuntu利用docker搭建Java相关环境问题记录
  • 如何有效防止服务器被攻击
  • 在激烈竞争下B端HMI设计怎样打造独特用户体验?
  • 数组理论基础
  • 从GPT到Gemini 大模型进化史
  • ADVB发送器设计
  • Matter如何终结智能家居生态割据,重构你的居住体验?
  • 随手笔记-python-opencv 读取图像的顺序 与pytorch处理图像的顺序
  • Mysql的安装
  • Java面试(2025)—— Spring
  • FPGA入门学习Day1——设计一个DDS信号发生器
  • opencv HSV的具体描述
  • 【Java学习笔记】关键字汇总
  • 赛灵思 XCVU440-2FLGA2892E XilinxFPGA Virtex UltraScale
  • ESP32- 开发笔记- 硬件设计-ESP32-C3 天线设计-利用嘉立创EDA来设计
  • 数码管LED显示屏矩阵驱动技术详解
  • Gitignore详解:版本控制中的文件忽略机制
  • 秒杀系统解决两个核心问题的思路方法总结:1.库存超卖问题;2.用户重复抢购问题。
  • Ubuntu 安装WPS Office
  • JavaScript 对象复制:浅拷贝与深拷贝
  • 观察者模式与发布订阅模式:解耦与通信的艺术
  • 【网络】IP层的重要知识
  • 【工具】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~
  • Redis面试——事务
  • NoSQL 与 NewSQL 全面对比:如何选择适合你的数据库方案?
  • 使用代理IP提取数据的步骤是什么?代理IP如何提高爬虫采集效率?