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

Unity中SendMessage调用chiliPepper提示无接收方报错排查

错误诱因

报错SendMessage chiliPepper has no receiver!的核心逻辑是:调用SendMessage时,在查找范围内没有匹配到名为chiliPepper的可执行方法,结合你的代码,90%的情况是以下原因导致:

  • Inspector字段引用错误:ToutchPepper组件的textBox字段没有正确赋值为挂载了NPCtext.cs的目标对象,常见情况包括拖错成其他场景对象、拖入了Project面板里的预制体而非场景实例、原textBox对象被删除后引用丢失、拖入的对象上的NPCtext脚本被移除。
  • 不必要的SendMessage调用埋下隐患:你已经通过GetComponent<NPCtext>()拿到了目标脚本的类型引用,完全不需要用SendMessage这种基于字符串反射的低效调用方式——字符串手滑拼错、方法名改了没同步改字符串、大小写不匹配,都会直接导致找不到方法。
  • 目标对象状态异常:触发点击逻辑时,textBox游戏对象本身处于失活状态(activeInHierarchy = false),这种状态下SendMessage无法遍历到对象上挂载的脚本方法。
解决方案

按优先级从高到低操作即可:

  1. 替换SendMessage为强类型直接调用(彻底规避字符串匹配问题,性能更好)
    打开ToutchPepper.cs,找到Update方法里的点击判断逻辑,把原有SendMessage的代码替换为以下内容:
    void Update(){
        Debug.Log(onObject+"pepper");
        if(Input.GetMouseButtonDown(0))
        {
            if(onObject){
                NPCtext targetNpcText = textBox.GetComponent<NPCtext>();
                if(targetNpcText != null)
                {
                    targetNpcText.chiliPepper();
                }
            }
        }
    }
    
  2. 检查Inspector引用赋值
    修改完代码保存回到Unity编辑器,选中场景中的Toutch对象,在Inspector面板找到ToutchPepper组件:
    • 确认textBox字段拖入的是场景中实际挂载了NPCtext脚本的textBox实例,不要拖Project面板的预制体、不要拖错同名对象
    • 确认self字段正确拖入Toutch对象自身,避免Start方法的逻辑异常
  3. 状态校验
    运行时触发点击前,在Hierarchy面板确认textBox对象处于激活状态(对象名前面的勾选框是选中状态),如果有逻辑会主动禁用textBox对象,要在调用方法前先把对象设为激活。

内容的提问来源于stack exchange,提问作者jake is the coolest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:45:39