本文就什么是UFunction?UFunction怎么用?做一个简单的总结
UFUNCTION和UPROPERTY一样都为UE4的反射系统服务,要知道什么是反射系统可以看上一个博客:UE4 C++学习 浅析UProperty属性说明符 - CatSevenMillion - 博客园 (cnblogs.com)
什么是UFunction?
一样的,先来看下官方解释:

如果你看过上一篇博客,那你应该就知道,UProperty(属性说明符)其实就是对UE4中的一些你可以设置的属性功能有哪些,比如这个属性是否是可读,可编辑,或者是蓝图上能否看见等等。
同理,UFunction就是对UE4中的函数的功能做一些限制。
怎么使用UFunction?
下面来看几个例子,例子同上一篇一样,都是部分翻译自benui大佬的博客,想要查看完整的例子可以直接访问网站:All UFUNCTION Specifiers · ben?ui (benui.ca)
同上一篇一样
注:标记不区分大小写,但为了可读性,我建议坚持使用这里的大小写示例。
如果值没有空格,则引号是可选的。例如:someBool=“true”与someboo=“true”相同。同样,为了可读性,我建议仅在字符串类型属性周围使用引号。
1.BlueprintCallable
使用该关键字的函数可以在蓝图中被调用,执行
例子:
我们在C++中写一个函数Fun(),并且在蓝图中对他进行调用。
C++中的代码:

函数的作用是打印一段话在屏幕上,用这个我们来判断函数是否被调用。

蓝图:

这是我们写的一个MyActor类,当MyActor被创建时,就调用这个Fun函数
效果:

当点击开始以后,成功出现红字: This is Fun,说明函数成功被调用。(上面一段红字是光线需要重新编译的意思,可以忽略掉)
2.BlueprintImplementableEvent
该函数需要在蓝图中实现,且在C++中不能被实现。
否则会报错:

要使用时,只需要我们在蓝图进行重载实现就可以了


3.BlueprintNativeEvent
该函数使用时需要被重写且不能在C++中实现,如果不被重写的话就会调用一个前缀与原函数一样,但是后缀多了"_Implementaion"的函数。且该函数必须实现。
使用:

光实现了还是不够,系统会报错,让我们多实现一个函数
如图下实现了函数之后报错解除

4.BlueprintPure
一个BlueprintPure的函数在蓝图中会显示为没有接口。对于默认的使用了const关键字的函数也会被展示成Pure(纯)的函数。我们为了使得一个有const关键字的函数不成为pure函数,我们可以使用 BlueprintPure=false。
注:纯函数不会缓存他的任何结果,所以当你在使用一些大型的纯函数是应该要十分小心。最好避免使用蓝图纯函数来输出数组资产。
例子:

5.SealedEvent
此函数不能在子类中重写。SealedEvent关键字只能用于事件。对于非事件函数,将其声明为静态或最终以密封它们。
6.CallInEditor
使得不带参数和返回值的 UFUNCTION 显示在实例的面板上
对于添加辅助函数以更改选定实例上的值可能很有用。例如,通过改变敌人的状态来增加敌人的级别,或者使用C++填写默认值。
重申一下,它只适用于没有参数的函数,并返回void。且BlueprintCallable不是必需的。仅适用于类的实例,所以Actor被放在一个关卡里,而不是放在蓝图类里。
在使用时,我们可以把它放在元位置,也可以把它放在主位置,大多数情况下都是放在主位置
注:元位置指的是,使用meta=(xxxx)放在属性位上,这仅仅是方便我们在UE4的Editor中开发的存在
找了大部分帖子都说有没有meta关键字其实影响不大,后续遇到关于元位置的问题了再专门出一篇博客吧哎
例子:

参考链接:
函数说明符 | 虚幻引擎5.0文档 (unrealengine.com)
All UFUNCTION Specifiers · ben?ui (benui.ca)
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
转自:spring.profiles.active和spring.profiles.include的使用及区别说明下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息如:jdbc地址、ip、端口等此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常spring.profiles.active属性例:配置文件,可使用以下方式定义application-${profile}.properties开发环境配置文件:application-dev