找回密码
 立即注册
首页 业界区 安全 Godot中用C#脚本自定义信号

Godot中用C#脚本自定义信号

尸酒岐 昨天 23:24
Godot中用C#脚本自定义信号


  • 自定义信号
    在类中声明带有[Signal]注解的函数,  这里函数名一定要是: XXXEventHandler的格式, Godot会自动把这样的声明翻译成信号名并在编辑器中显示.
  1.         [Signal]
  2.         public delegate void MyDIYSignalEventHandler(string message);
复制代码
在合适的位置调用EmitSignal发射信号, 这里的信号名就是XXX, 不需要EventHandler
  1.                 EmitSignal(nameof(MyDIYSignal), message);
复制代码

  • 在C#中连接信号

    • 我们可以直接在编辑器中通过GUI来联接信号
    • 也可以用如下代码获取到发射对象后, 用Connect方法连接信号, 写法如下:

  1. var sender = GetTree().CurrentScene.GetNode<SendSingnal>("SendSignal1");
  2. GD.Print(sender != null ? "Found SendSingnal node" : "SendSingnal node not found");
  3. sender.Connect(nameof(sender.MyDIYSignal), new Callable(this, nameof(OnMyDIYSignalReceived)));
复制代码

  • 处理信号

    • 我们定义OnMyDIYSignalReceived函数, 函数的输入参数与发射的信号之间是一一对应的, 函数中可以接收到的信号进行处理.

  1. public void OnMyDIYSignalReceived(string message)
  2. {
  3.   GD.Print("Received DIY signal with message: " + message);
  4.   this.GetNode<Label>("Label").Text = "Received: " + message;
  5. }
复制代码
更多文章来自:
https://www.codebonobo.tech/post/35
https://www.codebonobo.tech/post/35#Godot中用C#脚本自定义信号

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册