You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#委托事件结合类继承使用时触发运行时报错问题求解

问题原因

你在调用sendSave事件时,该事件没有任何订阅者,值为null,直接调用就会触发空引用异常。

修复方案

1. 事件触发前增加判空逻辑

修改Base类中的MailingSave方法,调用事件前先判断是否有订阅者:

public void MailingSave(string name)
{
    _saveName = name;
    // 空条件运算符写法,C# 6及以上版本支持
    sendSave?.Invoke(_saveName);

    // 旧版本C#兼容写法
    // if (sendSave != null)
    // {
    //     sendSave(_saveName);
    // }
}

2. 排查订阅失效的场景

如果预期已经完成订阅但还是触发报错,可以检查以下配置:

  • 确认Receiving组件Inspector面板中的_base字段已经绑定了场景中对应的Base/Button组件,未赋值的话_base本身为null,订阅逻辑不会生效
  • 确认事件触发的时机晚于订阅执行时机:如果Base类在Awake/OnEnable阶段就调用了MailingSave,此时Receiving的Start方法还未执行,还没完成事件订阅,可以把订阅逻辑移到Receiving的Awake方法,或者延后事件触发的时机。

内容的提问来源于stack exchange,提问作者VladShpilMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:27:05