美文网首页安卓逆向
unity中的action是什么?

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