[UE4]OnComponentBeginOverlap.AddDynamic 的编译错误
以 Character 类为例,假设有 PacManCharacter 派生自 Character类
首先在 PacManCharacter.h 头文件中添加碰撞函数的声明:
OnCollision 为自定义的碰撞函数,名称可以任意,但参数形式必须满足以下条件
UFUNCTION() void OnCollision(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
然后在 PacManCharacter.cpp 文件中的 SetupPlayerInputComponent 函数中添加绑定函数:
GetCapsuleComponent()->OnComponentBeginOverlap.AddDynamic(this, &PacManCharacter::OnCollision);
碰撞函数的实现:
void PacManCharacter::OnCollision(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) { GEngine->AddOnScreenDebugMessage(0, 1.0f, FColor::Red, TEXT("PacMan ! ")); }
但是以上是老版本的 UE4 支持的格式,编译会报参数类型不匹配的错误
error C2664: 'void TBaseDynamicMulticastDelegate::__Internal_AddDynamic(UserClass *,void (__cdecl AItem::* )(UPrimitiveComponent *,AActor *,UPrimitiveComponent *,int32,bool,const FHitResult &),FName)': cannot convert argument 2 from 'void (__cdecl AItem::* )(AActor *,UPrimitiveComponent *,int32,bool,const FHitResult &)' to 'void (__cdecl AItem::* )(UPrimitiveComponent *,AActor *,UPrimitiveComponent *,int32,bool,const FHitResult &)'
新版本的 UE4 应该对碰撞函数进行如下声明和定义:
UFUNCTION() void OnCollision(class UPrimitiveComponent* HitComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult);
void PacManCharacter::OnCollision(class UPrimitiveComponent* HitComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) { GEngine->AddOnScreenDebugMessage(0, 1.0f, FColor::Red, TEXT("PacMan ! ")); }
即增加了第一个参数 class UPrimitiveComponent* HitComp
转载于:https://www.cnblogs.com/timy/p/8645492.html
[UE4]OnComponentBeginOverlap.AddDynamic 的编译错误相关推荐
- (2110,5): warning MSB3245: 未能解析此引用。未能找到程序集“Windows”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。
最近打UE4的包的时候,总是失败.没办法只能各种搜索找答案解决,用了度娘.sougou.bing都没有找到理想的答案,最后没办法翻墙用google找答案,还好最后完美解决了. 下面是编译VS的erro ...
- 编译linux内核的错误,linux内核编译错误
原标题:linux内核编译错误 内核版本:2.6.14 交叉编译器: -linux-gcc 4.3.3 错误: arch/arm/mm/alignment.c: In function 'proc_a ...
- vc 6.0常见编译错误及改正方法
最常见VC++6.0编译错误信息集合 1.fatal error C1010: unexpected end of file while looking for precompiled header ...
- oracle创建过程带有编译错误,警告:创建的函数带有编译错误
警告:创建的函数带有编译错误 下面是一个<Oracle Database Java Developer's Guide>上的例子: ---------------------------- ...
- 18.16 gcc-3.4.5编译错误及解决方法集锦
18.16 gcc-3.4.5编译错误及解决方法集锦 参考文章: (1)18.16 gcc-3.4.5编译错误及解决方法集锦 (2)https://www.cnblogs.com/baixu/p/10 ...
- Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案
Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案 参考文章: (1)Eclipse Maven 编译错 ...
- vs代码显示波浪线,但没编译错误
参考:https://blog.csdn.net/everrisky/article/details/55833396 vs2015打开cocos2dx-3.14自带项目,代码显示波浪线,但没编译错误 ...
- Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”
Linux系统下GCC编译错误:"undefined reference to 'sqrt'",解决方法:-lm 数学函数sqrt()位于libm.so库文件中(这些库文件通常位于 ...
- Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)
准备开始学一学d3d,听说<Introduction to 3D Game Programming with DirectX 12>这本书不错,于是就拿来学一学.不料第一个例子,按照书中的 ...
最新文章
- 解决webpack打包bootstrap报字体不能解析问题
- java 调度服务器,Quartz Scheduler - 使用PostgreSQL服务器调度作业
- 015 Android之可执行文件dex
- 【JavaScript】appendChild一个的注意点之会删除原dom树节点
- “中国好创意” CCF全国青年大数据创新大赛启动仪式 暨大数据大师论坛议程...
- 新概念英语第三册01-20课(转)
- 字典:python的基础数据类型
- 陈国荣 计算机科学,信息工程中计算机网络技术的应用-网络技术论文-计算机论文(10页)-原创力文档...
- 仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统
- JavaWeb 学习路线
- LA4487 Exclusive-OR (加权并查集)
- Java并发编程:volatile关键字解析 by 海子
- 计算机一级考试ppt知识点,计算机一级考试考点:PPT演示文稿
- 中国农业机械融资租赁市场预测与投资战略报告(2021版)
- 【思维导图怎么画】万彩脑图大师教程 | 添加链接
- java 遍历出d盘所有文件_JAVA遍历一个文件夹中的所有文件
- Ribbon负载均衡服务调用
- 雷霆行动(STG飞机游戏)源码分析
- html代码正方形变椭圆,椭圆伸缩变换公式
- 安卓开发高仿QQ空间