unity中的action是什么?
作者:
约你一起偷西瓜 | 来源:发表于
2024-04-15 17:03 被阅读0次
用过c++的朋友直接理解为 std::function + std::bind
首先看看基础的类继承关系
以下图中函数为例
由图可知,只要涉及到到action都会继承于 Delegate
所以我们只需要去关注这个类的成员变量到底有些什么就明白了
如下图
这里的target实际上是一个Il2cppObject,即是一个instance
这里的method是一个 il2cppmethod (即我们脚本中常用到的哪个methodinfo)
其他的暂时不用关注,这里当我们调用 action的invoke方法时候,即是调用methodinfo->virtualAddress,同时将m_target当成第一个参数传递给它,如果有action有多个参数,即往后依次传参即可
具体methodinfo是什么
https://github.com/nneonneo/Il2CppVersions/blob/a23ec89104fbd8068065da76bf0e5a1e2d59619d/headers/2019.4.26f1.h#L1162
补充信息:
这种操作我在脚本中的导出函数B_Button(解析OnPointerClick的时候)也用到了,具体可以去参考源码中
ref : https://github.com/axhlzy/Il2CppHookScripts/blob/f656cb9cc429e1e887e87f9f792aa9d19f0c42b4/Il2cppHook/agent/expand/TypeExtends/mscorlibObj/Object/Component/Behavior/MonoBehaviour/Selectable/Button/export.ts#L245
本文标题:unity中的action是什么?
本文链接:https://www.haomeiwen.com/subject/vbvdxjtx.html
网友评论