UE AI Perception的Sense解析

本文详细解析了UE AI Perception中的Sense辅助结构和具体实现,包括事件结构、配置结构,以及不同Sense如何处理和注册事件。重点介绍了如何编写自定义Sense,包括需要实现的函数和注意事项,如事件处理、监听器和源数据处理,以及感知系统中的关键函数和流程。
摘要由CSDN通过智能技术生成

UAISense的辅助结构

UAISenseEvent事件结构
  • UAISenseEvent本身更多的是充当类似于接口的功能,最关键的函数定义是GetSenseID,这个函数交由继承的子类负责实现,而子类会通过UAISense::GetSenseID(UAISense_XXX)获取全局唯一的实例SenseID,GetSenseID函数最终会调用GetDefaultObject里的SenseID,GetSenseID获取到的ID可以作为获取实例的索引,在感知系统中,通过传入的UAISenseEvent获取ID,再遍历Sense调用指定Sense的事件注册函数,转到Sense中时,会尝试转换为自身定义的事件类型,添加到事件结构里,等待Update循环遍历处理
  • 从整个执行的流程来看UAISenseEvent主要为了完成向UAISense投递数据,无论是从Sense本身,还是从感知系统,最终会把事件投递到Sense里的事件数组里,比如UAISense_HearingTArray<FAINoiseEvent> NoiseEventsUAISense_Damage里的TArray<FAIDamageEvent> RegisteredEvents
  • 感知系统里维护了三个事件相关的模板函数OnEvent``OnEventBatch``static OnEvent以及两个蓝图可调用的两个函数ReportEventstatic ReportPerceptionEvent,这些函数最终会索引到指定的Sense实例,转调Sense里的注册事件函数,与感知系统相对应,Sense类定义的同义的函数。如果有注册事件的需求,那就可以实现UAISense基类里的RegisterWrappedEvent或者对应感知系统里的事件函数,接收事件并处理即可
UAISenseConfig辅助配置结构
  • UAISenseConfig本身为UAISense提供了调试颜色,过期遗忘控制变量,开始时启动,感知名缓存,获取感知ID方法等
  • 继承自UAISenseConfig的子类充当该Listener感知Sense的参数配置,通过这些配置完成一个实例Listener的定制化需求
  • 比较典型的配置是UAISenseConfig_Sight,视觉配置的参数在AIHelpers.h里的CheckIsTargetInSightCone函数调用中使用,而该函数正是在UAISenseConfig_SightUpdate函数中被调用

UAISense各种Sense具体实现

UAISense
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值