- 编辑器版本:CocosCreator 3.0 rc偷跑版
没有3D开发经验,然后又想用3.0,这里碰到了一个问题
起因
我想弄一个常驻节点(所有项目通用的),原来是直接在编辑器弄的,但是我现在想用代码的方式创建,1是可以防止忘记拖或者更新的问题,2是方便把控。
经过
我用编辑的Canvas进行参数替换,代码如下
this.uiNode = new Node('UI');
this.uiNode.layer = Layers.Enum.UI_2D;
// 添加widget
let widget = this.uiNode.addComponent(Widget);
widget.top = 0;
widget.left = 0;
widget.bottom = 0;
widget.left = 0;
// widget.updateAlignment();
director.getScene()!.insertChild(this.uiNode, 999);
// // 添加UITransform
// let uiTransform = this.uiNode.addComponent(UITransform);
// uiTransform.setContentSize(750, 1334);
// uiTransform.setAnchorPoint(0.5, 0.5);
// 添加camera
let node = new Node('Camera');
this.uiNode.addChild(node);
let camera = node.addComponent(Camera);
camera.enabled = true;
// camera.visibility = 41943040;
camera.priority = 1073741824;
camera.clearFlags = gfx.ClearFlag.DEPTH_STENCIL;
camera.clearColor = math.color(0, 0, 0);
camera.projection = renderer.scene.CameraProjection.ORTHO;
camera.far = 2000;
// 添加canvas
let canvas = this.uiNode.addComponent(Canvas);
console.log(canvas);
canvas.cameraComponent = camera;
canvas.alignCanvasWithScreen = true;
let test = new Node();
test.addComponent(Label).string = 'here=====';
this.uiNode.addChild(test);
结果
label是显示出来啊了,可是后面有道光,感觉跟摄像机有关。
排查
我将代码的canvas和编辑器创建的canvas进行对比,发现
- _camera的enable是false,我设置为true也没用
- 我使用了widget,但是UITransform的大小,始终是100,100 除非我进行设置
经验有限,实在排查不出来,请问有哪位大佬可以指点下。

