码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Godot 添加信号


    前言

    Godot 里面C#和GDScirpt 的用法完全不一样,网上相关资料太少了。

    什么是信号

    信号分为信号源,触发,目的节点。信号源在某些条件下触发信号,比如按钮点击,鼠标悬停等事件

    触发
    节点1
    信号源:按钮点击
    触发事件
    节点2

    新建点击事件

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    编写信号

    我们需要编写完全一模一样的信号。如果是GDScript会自动生成对应的信号,但是如果是C#的话需要我们手动添加方法

    /// 
    /// 方法名必须完全一致
    /// 
    private void _on_button_pressed()
    {
    	//获取子节点LineEdit
        var input = GetNode<LineEdit>("LineEdit");
    	//获取子节点Button
        var button = GetNode<Button>("Button");
        //添加按钮事件
        button.Text = $"input.Text:{input.Text}";
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    运行结果

    在这里插入图片描述

    自定义信号

    delegate void 信号必须以EventHandler 结尾
    在这里插入图片描述

    	[Signal]
    	public delegate void TestEventHandler();
    
    	
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    自定义信号节点添加成功!

    在这里插入图片描述

    信号节点自动化命名

    大家可能会疑惑触发事件是自动生成的,不会出问题吗?一般来说不会出问题。
    在这里插入图片描述

    给别的节点传信号

    在这里插入图片描述

    给自己传信号

    在这里插入图片描述

    同名节点传信号

    在这里插入图片描述

    总结:

    信号命名:

    - 给别的节点传: _on_节点名称_方法名()
    - 给自己传:_on_方法名()
    
    • 1
    • 2

    所以如果有两个节点名称完全一致,确实会重复信号。不过Godot 限制兄弟节点是不能有同名情况出现的,只能是非兄弟节点才可以。

    直接获取信号

    我们也可以直接在_Ready函数里面把逻辑给写了。但是只能添加默认的委托方法。此方法不推荐。一个是只能用默认方法,还有一个是必须在代码里面看,没有信号显示的那么直观。

    	public override void _Ready()
    	{
            var input = GetNode<LineEdit>("LineEdit");
            var button = GetNode<Button>("Button");
    		button.Pressed += () =>
    		{
    			button.Text = input.Text;
    		};
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    qnx shell sh ,linux shell bash
    JavaWeb之Maven学习
    Hypervisor Platform无法执行xmm寄存器fpu指令sse解决方法
    Android R 11.x quickstep 手势导航架构和详细实现
    JS高级 之 使用 Iterator - Generator
    Map集合继承结构
    多维时序 | MATLAB实现SSA-CNN-BiGRU-Attention多变量时间序列预测(SE注意力机制)
    数据库基础 培训讲义
    【bugfix】解决Redis缓存键清理问题
    java 企业工程管理系统软件源码 自主研发 工程行业适用
  • 原文地址:https://blog.csdn.net/qq_44695769/article/details/133717359
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号