gpt4 book ai didi

c# - 团结 : Handling unregistration of a custom EventHandler with UnityEvent

转载 作者:行者123 更新时间:2023-12-02 10:33:26 27 4
gpt4 key购买 nike

我使用了我创建的自定义(系统)EventHandler:

public event EventHandler<T> OnItemSelected;

然后我分配一个自定义匿名函数:

.OnItemSelected += (...) => {};

但是我很确定它不会自行清理,当我的 gameObject 时被破坏这会导致内存泄漏。我怎样才能防止这种情况发生?我应该更换我的 EventHandler通过UnityEvent并使用RemoveAllListeners

最佳答案

你不能!

正如您所说,Lambda 表达式是匿名的,因此无法取消注册,因为您无法寻址它们!

如果您稍后需要删除它们 - 不要使用 lambda,而是使用显式方法,例如而不是

OnItemSelected += (T) => { ... };

相当明确地使用

private void HandleItemSelected(T value)
{
...
}

OnItemSelected += HandleItemSelected;

现在您也可以使用删除

private void OnDestroy()
{
OnItemSelected -= HandleItemSelected;
}

关于c# - 团结 : Handling unregistration of a custom EventHandler with UnityEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59972581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com