1. 添加GUI 1.1 新建场景,添加 CanvasLayer ,改名为HUD。 CanvasLayer 是绘图层,用于绘制各种图层。 layer 属性决定了图层的层级,从低向高绘制,-1 或更低通常用于绘制背景,1 或者更高通常用于绘制 HUD。 Transform2D() 用于计算图层的缩放、扭曲、翻转。参数为 (X.x, X.y, Y.x, Y.y, O.x, O.y) ...
2.1 Canvas Transform 上一节提到过,每一个 canvasItem 都有一个自己的 Canvas Layer(不是 CanvasLayer 节点)。每一个 Canvas Layer 都有自己的 transform。 默认所有节点都被渲染在 Layer 0 上。 2.2 全局 canvas transform 前面说过,Viewport 也有一个 canvas transform,这个是全局 canvas transform,这个 transfor...
不过这里实际上可以用CanvasLayer来简单实现。 在场景中添加CanvasLayer节点,然后把之前的背景放到它下面,然后把它的Layer属性调整成一个负值(保证它最小),这样它就不会覆盖其它节点: 其实现在启动游戏,你就会发现背景已经保持不动了。 那啥是CanvasLayer。CanvasLayer是容纳CanvasItem的容器,一个视口(Viewport)中的场景...
一开始我以为要用VIewport,走了很多弯路,但是后来才发现有一个简单的节点设置就可以,那就是CanvasLayer节点: 1、将相机单独挂载,此时【视口】和【相机】的位置会拆开计算,屏幕=相机,项目坐标=视口 2、根据输入改变位置的内容可以写在相机脚本中,相当于控制相机运动和缩放 3、勾选CanvasLayer的跟随视口属性 4、此时...
1. Canvas Layer 1.1 ViewPort 和 Canvas Items CanvasItem 是所有 2D 节点的基础。无论是 Node2D 还是 Control 都是继承自此。 CanvasItem 节点肯定是 viewport 节点的直接或者间接子节点。(因为 root 节点本身就是一个 viewport,所以平时不会对这件事有感觉),viewport会展示 CanvasItem 节点。
如果需要显示拾取提示时这个UI场景尚未实例化,我们就实例化并加入UI的CanvasLayer,否则我们就令其可见。稍后我们会通过设置visible属性来控制拾取提示的显示和隐藏。当然无论如何,我们都要设置拾取提示的item属性为我们可以拾取的道具中所引用的道具元数据,以令其显示对应道具的信息。
说做就做,在主场景中添加一个 CanvasLayer 子节点,改名为 UI ,然后往它里面添加其他子节点:首先添加一个 HBoxContainer 控件节点,如同其名,这是一个内容水平排列的盒子容器;在该节点内部添加一个显示金币图片的控件 TextureRect 节点,以及一个计数文本标签节点:Label 控件。控件节点的属性设置如下:...
蓝色CanvasLayer和绿色CanvasLayer都是全屏UI 平时都是隐藏状态,等用户点击按钮时触发全局暂停,并显示。 但是蓝色UI层的按钮事件正常,但是绿色UI层的事件无法触发 在检查了所有container都没有捕获鼠标事件的情况下,结果pressed事件依然不能被触发 最后误打误撞修改了两个CanvasLayer的layer属性为不同值,问题就解决了编辑...
我们只要把所有控件节点设置为 CanvasLayer 层的子节点即可。说做就做,在主场景中添加一个 CanvasLayer 子节点,改名为 UI ,然后往它里面添加其他子节点:首先添加一个 HBoxContainer 控件节点,如同其名,这是一个内容水平排列的盒子容器;在该节点内部添加一个显示金币图片的控件 TextureRect 节点,以及一个计数文本标签...
onready var ui = get_node("/root/MainScene/CanvasLayer/UI") 接着来到collect_coin函数,添加一行代码设置UI text。 ui.set_score_text(score) 按下play,现在当我们收集一个硬币时,score text将更新。我们还要进行一些设置,以便游戏开始时显示设置的文本。在UI脚本里... ...