unity中的action是什么?
2024-04-15 本文已影响0人
约你一起偷西瓜
用过c++的朋友直接理解为 std::function + std::bind
首先看看基础的类继承关系
以下图中函数为例
由图可知,只要涉及到到action都会继承于 Delegate
所以我们只需要去关注这个类的成员变量到底有些什么就明白了
如下图
这里的target实际上是一个Il2cppObject,即是一个instance
这里的method是一个 il2cppmethod (即我们脚本中常用到的哪个methodinfo)
其他的暂时不用关注,这里当我们调用 action的invoke方法时候,即是调用methodinfo->virtualAddress,同时将m_target当成第一个参数传递给它,如果有action有多个参数,即往后依次传参即可
具体methodinfo是什么
补充信息:
这种操作我在脚本中的导出函数B_Button(解析OnPointerClick的时候)也用到了,具体可以去参考源码中