当前位置: 首页 > 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

相关文章:

  • genhtml 工具使用说明
  • 何时选择for,何时使用while?
  • 进行性核上性麻痹:合理饮食,提升生活质量
  • 【天梯赛练习】L2-035 完全二叉树的层序遍历
  • C++学习:六个月从基础到就业——面向对象编程:重载运算符(上)
  • Scala 入门指南
  • C++23 新预处理器指令详解:#elifdef、#elifndef 和 #warning
  • 数据结构与算法[零基础]---5.图
  • WIN11运行游戏时出现“ms-gamingoverlay”弹框的问题
  • package.json 中的那些版本数字前面的符号是什么意思?
  • WSL2-Ubuntu22.04安装URSim5.21.3
  • jvm调优工具arthas(阿尔萨斯)安装与使用---实践
  • 宫庭海:跨界融合与家国情怀的影视开拓者
  • 机器学习 Day11 决策树
  • Ubuntu 20.04.6编译安装COMFAST CF-AX90无线网卡驱动
  • OpenHarmony Camera开发指导(四):相机会话管理(ArkTS)
  • js day2
  • 十五种光电器件综合对比——《器件手册--光电器件》
  • FastAPI与SQLAlchemy数据库集成
  • 2025.04.17【Dendrogram】生信数据可视化:Dendrogram图表详解
  • 国台办:台湾自古属于中国,历史经纬清晰,法理事实清楚
  • 台行政机构网站删除“汉人”改为“其余人口”,国台办回应
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 演员黄晓明、金世佳进入上海戏剧学院2025年博士研究生复试名单
  • 王毅集体会见加勒比建交国外长及代表
  • 科创板年内第3家!健信超导IPO获受理,拟募资8.65亿