当前位置: 首页 > news >正文

【解决】OnTriggerEnter/OnTriggerExit 调用匿名委托误区的问题

开发平台:Unity
开发语言:CSharp 6.0
开发工具:Visual Studio 2022

问题背景


public void OnTriggerEnter(Collider collider)
{output.OnInteractionNoticed += () => OnInteractionTriggered?.Invoke();
}public void OnTriggerExit(Collider collider)
{output.OnInteractionNoticed -= () => OnInteractionTriggered?.Invoke();
}

在完成 “订阅 + 注销” 后,订阅响应仍然存在。

问题解决 | 匿名委托


问题根源:匿名委托
lambda 表达式本质是 实例化新的委托类型。导致 订阅 + 注销 均不属于同一实例对象。

使用显式委托实例

public void OnNoticed() => OnInteractionTriggered?.Invoke();

对应的订阅如下:

public void OnTriggerEnter(Collider collider) => output.OnInteractionNoticed += OnNoticed;
public void OnTriggerExit(Collider collider) => output.OnInteractionNoticed -= OnNoticed;
http://www.lryc.cn/news/544534.html

相关文章:

  • vscode集成DeepSeek
  • MapReduce编程模型
  • SQL server2022的详细安装流程以及简单使用
  • Linux的诞生:一场自由与协作的技术革命
  • Pytorch为什么 nn.CrossEntropyLoss = LogSoftmax + nn.NLLLoss?
  • Go入门之文件
  • 基因型—环境两向表数据分析——品种生态区划分
  • Leetcode2414:最长的字母序连续子字符串的长度
  • React(12)案例前期准备
  • 2025年2月28日(RAG)
  • python-leetcode-寻找重复数
  • Vue 3 中,如果 public 目录下的 .js 文件中有一个函数执行后生成数据,并希望将这些数据传递到组件中
  • ai大模型自动化测试-TensorFlow Testing 测试模型实例
  • 初阶MySQL(两万字全面解析)
  • 数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?
  • SpringBatch简单处理多表批量动态更新
  • 夜莺监控 - 边缘告警引擎架构详解
  • 18440二维差分
  • 安全传输,高效共享 —— 体验FileLink的跨网文件传输
  • SOME/IP 教程知识点总结
  • 学习路程八 langchin核心组件 Models补充 I/O和 Redis Cache
  • 图书数据采集:使用Python爬虫获取书籍详细信息
  • 【DeepSeek系列】05 DeepSeek核心算法改进点总结
  • 安装pointnet2-ops库
  • DO-254航空标准飞行器电机控制器设计注意事项
  • ABAP语言的动态程序
  • 开源电商项目、物联网项目、销售系统项目和社区团购项目
  • Docker教程(喂饭级!)
  • HTML:自闭合标签简单介绍
  • 【和鲸社区获奖作品】内容平台数据分析报告