美文网首页
Godot 学习笔记 #01

Godot 学习笔记 #01

作者: RetroDaddy | 来源:发表于2018-12-06 22:39 被阅读0次

    Godot 学习笔记 #01

    程序部分

    关于 _ready

    在 _ready 中你可以访问完整的 tree,但是你不能更改 tree 的结构。当我想在 _ready 中把一个子物体移动到另外一个地方时,操作总是无法成功的。这个时候有两种方法:

    • 使用 call_deferred(函数名)
    • 使用 yield(get_tree(),"idle_frame")

    相关阅读:
    https://twitter.com/reduzio/status/966037750918057987
    https://godotengine.org/qa/7336/what-are-the-semantics-of-call_deferred

    Editor 相关

    GDScript 脚本中只要加入 tool 关键字就会在编辑器中执行

    包括子物体的 Visible 显示都可以在编辑器的界面中实时反馈了,要研究的是:

    • tool 所放置的位置有没有关系,之前的代码会不会在编辑器中运行
    • extend 的脚本跟 tool 的关系,(测试是可以运行的)

    检测当前是否在 Editor 中运行,使用 Engine.editor_hint 检查

    https://docs.godotengine.org/en/3.0/classes/class_engine.html?highlight=editor_hint

    渲染相关

    Viewport 内的 Node 无法使用移动工具

    这个官方还没有解决:
    https://github.com/godotengine/godot/issues/20619
    https://github.com/godotengine/godot/issues/17739

    viewport 中不显示子物体内容?

    在使用 viewport 时一定要给一个 camera 配合这个 viewport(最近的一个),否则这个 viewport遇到别的摄影机时就会用别的摄影机.

    实现 mask 的尝试

    这里有 light mask 的演示 :https://www.youtube.com/watch?v=e5EUZGbrMRY

    但是,新渲染引擎中这个功能失效了,需要等待下个版本修复:https://github.com/godotengine/godot/issues/8685

    现在的效果是这样:

    2018-12-06-10-50-11.png

    已经实现半透明 mask,问题是颜色被灯光叠加了

    灯光相关设置为:

    2018-12-06-10-52-26.png

    材质需要为 CanvasItemMaterial:

    2018-12-06-10-53-38.png

    更新 : 我发现indienova已经有人发过相关的笔记:https://www.indienova.com/groups/post/29324
    问题在于,要做灯光 mask 需要你的图片的透明通道,我的那个纯黑白图当然就不行了,修改一下成功了:

    godotMask.gif

    Light2D

    会照亮相应的 Light Mask 层

    2018-12-06-10-31-51.png

    CanvasModulate

    2018-12-06-10-27-54.png

    这个节点会调整最近一个 viewport 的颜色,不过只要有 Light2D 存在就会失效

    2018-12-06-10-29-02.png 2018-12-06-10-29-26.png

    Outline Shader

    https://github.com/steincodes/godot-shader-tutorials/blob/master/Shaders/outline.shader

    这个 Shader 用来做人物高亮选择框,不过最好配合 Viewport 使用,在 Sprite 中使用这个 Viewport 作为贴图,然后再加 Shader 使用

    2018-12-06-10-25-24.png

    两个数值这么调,正好是一个像素

    2018-12-06-10-19-05.png

    UI 相关

    UI想要不跟随摄影机移动?

    添加一个 CanvasLayer 节点,把相关的 UI Node 放里面

    2018-12-06-10-13-35.png

    CanvasLayer 上的 Node 受到了 2D 光照影响?

    2018-12-06-09-59-25.png

    需要去掉 UI Node 的 Light Mask

    2018-12-06-10-00-31.png 2018-12-06-10-00-47.png

    打开 2D 光照后 CanvasLayer 下的文字渲染不出来?

    2018-12-06-10-10-18.png

    把 Lyaer 调为 0,是什么机制现在还不清楚

    2018-12-06-10-11-05.png

    相关文章

      网友评论

          本文标题:Godot 学习笔记 #01

          本文链接:https://www.haomeiwen.com/subject/xggncqtx.html