cocos creator随便乱记的笔记——可能大概是3.0新的用法

一个纯洁无瑕的萌新学的时候随便记的,不理解、不准确、不用看、不一定更新


属性声明

所有想在引擎里看到并挂载的属性在声明的前面都要加@property装饰。不想手动挂载的不用装饰,但是所有的变量都要有声明和定义。

图片资源无法挂载,拖拽是红色

图片添加到资源管理器后默认的Type是texture,无法直接挂载。
解决:点击图片,在属性检查器的最上面一栏Type改成sprite-frame。
(如果是图集资源则不会出现这个问题,直接挂载即可)

camera照不到东西

操作:从资源管理器里直接拖拽图片到层级管理器时,会自动创建一个带有sprite组件的新节点,看2.x这么用是可行的。但是我在3.0这样做会导致成功创建了节点,但只有我能看到,相机照不到东西,层级看起来也没问题,运行起来就是啥也没有。
解决:自己在层级管理器创建节点,然后在其下创建sprite组件,再挂载资源。
在这里插入图片描述

报错 [Window] Converting circular structure to JSON --> starting at object with constructor ‘Node’……

原因:在TS文件里出现了这样的定义 myNode:Node = new Node(); 或者是myNode = new Node(); 反正目前我在声明同时用new Node定义必定这样报错。此时属性检查器会卡死,直到改正了再过一会才会恢复正常,建议改几次代码回来让它多刷新,或者直接重启。
解决:2种改法

myNode:Node | null;
constructor() {
        super();
        this.myNode = null;
    }
//或者是下面这样
myNode:Node;
constructor() {
        super();
        this.myNode = new Node();
    }

报错:类型“Component”缺少类型“Node”的以下属性: _uiProps, _static, _pos, _rot 及其他 103 项。

原因:出现了形如这样的赋值—— myNode = myNode.getComponent("myClass")
另一种相似的报错: 类型“myClass”缺少类型“Node”的以下属性: _uiProps, _static, _pos, _rot 及其他 103 项。
原因:在前面import了myClass后,出现了形如这样的赋值—— myNode = myNode.getComponent(myClass)
把结点的组件赋值给一个结点肯定缺东西啊?但似乎2.x用JS写没事?反正3.0用TS写就不好使。
解决:这么写下一步大概是想利用新实例化出来的节点去调用myClass里写的函数吧,直接调 myNode.getComponent(myClass)!.myFunction(); 其中“!”是解决报错【类型null不能赋值给Node】的。

从管理器加载资源

cc.loader废除了,改用resources.load('路径',类型,回调函数{ })。其中的资源路径必须位于assets/resources的文件夹里面。在3.0里创建出resources文件夹时在属性检查器会自动出现它的说明。参数里的类型最好写上,虽然可以省,但不写默认是resources类型,有可能后面出现缺少属性的报错如【类型“resources”缺少类型“Node”的以下属性……等多少项】,特别是参数里使用了有名函数而非匿名函数时。

脚本插件?

JS都没了还想啥插件?import类去吧

creator客户端启动时卡在加载页面

多半是资源文件有问题,图片建议使用png,音频建议使用mp3文件。我好像是用wav卡死的。

移动坐标

3.0不能直接对节点的x、y属性赋值修改了,你可以认为它们都被加了private的访问控制修饰符。改用setPosition(),参数可以是一个Vec3类型的变量(不支持Vec2),也可以是2个数字或者3个数字。如果想循环修改,一个可选的方法是先getPosition()得到Vec3类型的变量vex3,再对这个vec3.x、vec3.y直接赋值修改,再把vec3作为参数set回去。或者是得到ve3后定义临时变量保存它的x、y,对临时变量直接修改作为参数set回去。

音乐和音效

一般情况可以不用AudioEngine了,
背景音乐直接在对应节点的属性检查器里添加现成的组件cc.AudioSource。
脚本触发的短暂音效,new一个AudioClip类型的变量,挂载后调用它的playOneShot(1) 方法,参数表示声音大小。

代码里获取尺寸

在2.x里可以直接用一个Node类型的变量myNode挂载后直接获取它的width属性。似乎2.x里Node是万能而且随意的。
在3.0的直接声明成Node类型就没有width属性,可以声明成UITransform类型的变量获取。
其他的也类似,去属性检查器里看看,那个属性位于哪一块就声明哪种类型的。
但是此时会报警告,说强烈反对使用node.width,请用getComponent(UITransform).width代替。
在这里插入图片描述

九宫格的编辑

在3.0的直接点击某个节点的属性检查器里没有编辑按钮。需要找到对应的图片,点击它,在图片的属性检查器下方有个编辑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值