一个纯洁无瑕的萌新学的时候随便记的,不理解、不准确、不用看、不一定更新
。
。
。
属性声明
所有想在引擎里看到并挂载的属性在声明的前面都要加@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的直接点击某个节点的属性检查器里没有编辑按钮。需要找到对应的图片,点击它,在图片的属性检查器下方有个编辑。