会员登陆
已有账号?登陆账号 还未注册?注册

快捷登陆

UE4 反射机制

2
回复
2695
查看
[复制链接]

1

主题

3

帖子

18

积分

英勇黄铜

Rank: 1

积分
18
发表于 2019-9-17 19:05:23 | 显示全部楼层 |阅读模式
反射机制
反射机制指的是程序可以在运行期间进行检测和修改自己状态的能力。

UE4引擎使用C++语言编写,C++语言本质上不支持反射机制,但是UE4提供了反射机制的实现。

FindFunction函数
在UE4中提供了FindFunction函数,用于在UObject或者AActor中查找某个函数名的函数并且返回其函数指针。

使用方法如下:

UFunction *Injured = this->FindFunction(TEXT("Injured"));
因此我们可以在Runtime时根据函数名的不同来进行函数的查找并且触发。

使用ProcessEvent函数来进行函数的触发
在UE4中提供了ProcessEvent函数来进行触发函数指针对应的函数,具体使用方法如下:

UFunction *Injured = this->FindFunction(TEXT("Injured"));
if (Injured)
{
    ProcessEvent(Injured, nullptr);
}

ProcessEvent函数第一个参数是函数指针,第二个参数指的是参数列表,其类型为void*类型。

使用CallFunction函数进行触发
还可以使用CallFunction函数来进行对应函数的触发,但是需要进行FFrame的建立。

并且为了避免内存泄漏,需要注意在使用过后销毁FFrame。

使用方法如下:

UFunction *Injured = this->FindFunction(TEXT("Injured"));
if (Injured)
{
    void* params = nullptr;
    FFrame* frame = new Frame(this, Injured, params);
    CallFunction(*frame, params, Injured);

    delete frame;
}




回复

使用道具 举报

0

主题

331

帖子

296

积分

不屈白银

Rank: 2

积分
296
发表于 2019-9-18 10:05:34 | 显示全部楼层
牛逼!!一位不愿露面的美术前来捧场
回复

使用道具 举报

1

主题

29

帖子

331

积分

不屈白银

Rank: 2

积分
331
发表于 2019-9-19 14:27:55 | 显示全部楼层
表示代码完全不懂啊
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

最新信息

更多+
关闭

站长推荐上一条 /1 下一条

客服QQ:3360799237

服务时间:周一至周五9:00-20:00

邮箱:biubiuiu@sina.cn

  • 动效1群

  • 动效2群

  • 公众号

本站帖子资源均转载自互联网分享,如若不慎侵犯您的权益请联系客服我们将及时删除。

Powered by Discuz! X3.4   © 2001-2013 Comsenz Inc.biubiu游戏美术论坛 ( 皖ICP备18003316号 

viewthread