首页 > 编程语言 >【ue源码】定制-蓝图部分

【ue源码】定制-蓝图部分

时间:2023-10-19 16:47:13浏览次数:33  
标签:队列 蓝图 c++ UE 源码 类型 ue

今天在更新UE的伤害系统的时候出现了一个问题:

    多个地方频繁调用一个函数,而这个函数肯定做优化,具体就是,把对应数据放入到队列,另外一个地方慢慢消费这个队列,

那么问题出现了,我使用的UE只有Single,TArray,TMap以及TSet这几个容器,如果使用队列,

那么问题来了,我如何弄出一个我需要的队列?我找了下面2种方法

    1.我需要自己新建一个几点,作为Node,然后在写一个BP_QueueLibrary,就形成了队列,可以操作队列对象

  2.深入了解蓝图源码,给UE原生自带的这几个容器中继续扩充容器,这个方式很有挑战性,问题解决更彻底,因为第一种方法,写的Node注定是一个不能支持模板类型(不同于c++),每次获取值需要强制类型转换

而这种方式使得以后会更简单一些

    通过查找网上的资料,终于找到了切入点:

     1.b站的人宅  蓝图编译原理,这个只对UE的蓝图编译系统流程做了一些说明但是无法了解具体

      2.https://zhuanlan.zhihu.com/p/393603858?utm_id=0  这里有了关键入口点FNaitiveFunctionRegistrar,这个是对于函数的注册,从文章中我们看到,我们写的c++,第一次是编译成了中间c++,然后成为正常的c++编译

       这就使得我找到了蓝图的模块,其实就在Core中,这里我查找到了UnrealType.h的头文件,他包含了蓝图中最基本的类型的定义,甚至有可能是注册,

      这里找到了关键线索FScriptSetHelper,FMapProperty 等类,这些类总共的类型对应上面的类型,也就是说我只用改下代码,新建一些对应的类型那么即可在蓝图中扩展,当然还需要看下这些类实现好之后,如何与他们蓝图交互,

注册到蓝图中

标签:队列,蓝图,c++,UE,源码,类型,ue
From: https://www.cnblogs.com/yang131/p/17775076.html

相关文章

  • vue 组件之间的数据传递
    一、组件之间的关系父子关系、兄弟关系、跨级关系二、父子之间数据传递1、父组件向子组件传递【使用 props】第一步:在父组件中使用子组件时,给子组件绑定属性第二步:在子组件中使用props接收绑定的属性值2、子组件向父组件传递【使用 $emit】第一步:在子组件中通......
  • [Vue]el和data的两种写法
    1.el有2种写法(1).newVue时候配置el属性。(2).先创建Vue实例,随后再通过vm.$mount('#root')指定el的值。//-------------el的两种写法-------------constvm=newVue({el:'#root',//第一种写法data:{name:'模板'}})//---------------......
  • c: Queue Calling
     /*********************************************************************************@fileTakeNumber.h*@brief排队等号*@author(geovindu,GeovinDu,涂聚文)*@date2023-10-19*@copyrightgeovindu站在巨人的肩膀上St......
  • 你也许不再需要使用 CSS Media Queries(媒体查询)了
    你也许不再需要使用CSSMediaQueries(媒体查询)了最近,CSS引入了一项新功能:ContainerQueries。它可以替代MediaQueries并实现MediaQueries无法胜任的任务。超越MediaQueries的功能让我们想象一个场景:在网页上有两列卡片。我们希望在卡片宽度较窄时,卡片内部呈上下布局......
  • SaaS云平台 springboot智慧校园管理平台源码
    智慧校园以互联网为基础,以“大数据+云服务”为核心,融合校园教学、管理、生活软硬件平台,定义智慧校园新生活。智慧校园管理平台管理者、教师、学生、家长提供一站式智慧校园解决方案,实现校园管理智能化.校园生活一体化、校园设施数字化、课堂教学生动化、家校沟通无缝化。系统架构:Ja......
  • 关于 npoi 的 DateUtil.IsCellDateFormatted(cell) 为true,取cell.DateCellValue却报
    NPOI中数字和日期都是NUMERIC类型的,这里对其进行判断是否是日期类型所以当 DateUtil.IsCellDateFormatted为true时,理论是应该可以取到  cell.DateCellValue但实际上,cell.DateCellValue可能会报异常,而取 cell.NumericCellValue却是正常的,HSSFWorkbook是excel2007以前......
  • Ant Design中表单验证输入框默认值initialValue不更改值会验证不通过(react)
    AntDesign中表单验证输入框默认值initialValue不更改值会验证不通过(react)更改前<Form.Itemlabel="用户标识"name="id"rules={[{required:true,message:'用户标识不能为空!',},]}......
  • vue-print打印(含多页打印带表头)
    打印功能开发:1)使用vuePlugsPrint.js2)main.js加入:importvuePlugsPrintfrom'@/utils/vuePlugsPrint'               Vue.use(vuePlugsPrint);3)创建打印模板页面:templatePrint.vue4)使用页面引入:<el-col:span="1.5">    ......
  • vue2和vue3导出页面为PDF格式:jspdf和html2canvas
    一、vue2导出PDF使用步骤1、安装html2canvas,将页面html转换成图片npminstall--savehtml2canvas卸载:npmuninstallhtml2canvas指定版本安装:[email protected]、安装jspdf,将图片生成pdfnpminstalljspdf--save3、定义全局函数在指......
  • CF568E Longest Increasing Subsequence 题解
    LongestIncreasingSubsequenceLIS问题有两种主流\(O(n\logn)\)解法,最常见的树状数组法,以及不那么常见的二分法。然后考虑本题,发现一个神奇的思路就是求出LIS后倒序复原出数组。进一步思考后发现,因为本题是LIS(LongestIncreasingSubsequence)而非LNDS(LongestNon-Decr......