UE5【C++】 UPROPERTY和UFUNCTION介绍

文章目录

  • UPROPERTY介绍
    • 常见属性说明符
    • 使用示例
  • UFUNCTION介绍
    • 常见属性说明符
    • 使用示例
  • 虚幻四种基本继承关系和组件的概念
    • Actor和组件的关系
    • RootComponent的作用
    • 组件的分类
    • 组件的使用
      • UActorComponent的作用
      • Ticking
      • USceneComponent
      • UPrimitiveComponent


UPROPERTY介绍

属性使用标准的C++变星语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符。UPROPERTY的作用是将变量公开到编辑器或蓝图。

常见属性说明符

  1. VisiableAnyWhere: 如果给一个变量声明了此关键词,那么它会出现在蓝图编辑器的右边和主编辑器上。(只是显示,不能编辑)
  2. VisibleDefaultsOnly: 在主编辑器中不显示,但是在蓝图编辑器中显示(不可编辑),Default默认是蓝图编译器。
  3. EditDefaultsOnly: 在蓝图中可以编辑,但是在主编辑器中不显示所以不可编辑,只在类默认设置中可见。
  4. EditAnywhere: 在主编辑器和蓝图编辑器中都显示并且都可以编辑。
  5. EditInstanceOnly: 在蓝图编辑器中不可修改但是可见,只有当蓝图实例化到场景中点击该组件才会出现相应的设置,实例化之后可以修改。但只能在原型上进行。

使用示例

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyCategory")
int MyInt;

在这个示例中,MyInt 是一个整数类型的属性,它被定义为可以在蓝图编辑器和主编辑器中都被编辑,并且可以在蓝图中被读写。

UFUNCTION介绍

使用 UFUNCTION 宏可以方便地为我们的函数添加元数据和属性,使得它们可以在蓝图中方便地使用和调用。

常见属性说明符

  • BlueprintCallable:此函数可在蓝图或关卡蓝图图表中执行。此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。
  • BlueprintPure:此函数可在蓝图或关卡蓝图图表中执行。此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。
  • BlueprintlmplementableEvent:需要在蓝图里面重载。此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用Implementation方法。
  • BlueprintReadOnly:蓝图只读
  • BlueprintReadWrite:蓝图可读可写
  • BlueprintNativeEvent:可通过细节(Details) 面板中的按钮在编辑器中的选定实例上调用此函数。
  • CallnEditor:可通过细节(Details) 面板中的按钮在编辑器中的选定实例上调用此函数。
  • ServerClient :表示这个函数是由服务器或客户端调用的。

使用示例

UFUNCTION(BlueprintCallable, Category = "MyCategory")
void MyFunction(int MyInt, FString MyString);

在这个示例中,MyFunction 是一个没有返回值的函数,它被定义为可以在蓝图中被调用,并且属于 MyCategory 类别。这个函数接受两个参数,一个整数类型的参数 MyInt 和一个字符串类型的参数 MyString

  • BlueprintCallable 表示这个函数可以在蓝图中被调用。
  • Category 表示这个函数属于哪个类别,可以在蓝图编辑器中方便地对函数进行分类和查找。

虚幻四种基本继承关系和组件的概念

虚幻引擎中有四种基本的继承关系:ActorPawnCharacterObject。其中,Actor 是最基本的继承关系,其他三种都是从 Actor 派生而来的。

Actor和组件的关系

组件可以附件到Actor身上,但是不能独立出现在场景中。Actor好比是人,组件好比是衣服,人可以出去逛街,衣服不行。

RootComponent的作用

每个 Actor 都必须有一个 RootComponent,它是所有其他组件的父组件。如果我们想要移动 Actor 或者旋转它,那么需要移动或旋转 RootComponent。

组件的分类

虚幻引擎中的组件可以分为两种:Actor Component 和 Scene Component。Actor Component 是一种可以附加到 Actor 上的组件,而 Scene Component 则只能依附于其他组件而不能单独放置到场景中。

组件的使用

组件可以在蓝图或 C++ 代码中创建和使用。如果我们想要创建一个新的组件,可以右键点击场景中的 Actor 并选择“Add Component”选项。然后在弹出的菜单中选择要创建的组件类型。

UActorComponent的作用

这是基础组件。其可作为Actor的一部分被包含。如果需要,其可进行Tick 。
ActorComponents与特定的Actor相关联,但不存在于场景中的任意特定位置。它们通常用于概念上的功能,如AI或解译玩家输入。
Actor Component (UActorComponent类) 有自己的行为,通常负责在许多类型Actor之间共享的功能,例如,提供视觉网格体、粒子效果、摄像机视角和物理互动。Actor通常提供与其游戏总体角色有关的高级目标,而Actor Component通常执行用于支持这些更高级目标的单独任务。

组件也可以与其他组件相连接,或者可以成为Actor的根组件。一个组件只能连接到一个父组件或Actor,但可以连接多个子Actor。我们可以想象一个组件树。子组件的位置、旋转和缩放相对于其父组件或Actor。

Ticking

在所属Actor的Tick()过程中执行Tick函数。(在编写自己的 Tick函数时,必须确保调用Super::Tick)

USceneComponent

SceneComponents是拥有变换的ActorComponents。变换是场景中的位置,由位置、旋转和缩放定义。

SceneComponents能以层级的方式相互附加。Actor的位置、旋转和缩放取自位于层级根部的SceneComponent。

UPrimitiveComponent

PrimitiveComponent是拥有一类图像表达(如网格体或粒子系统)SceneComponent。许多物理和碰撞设置均在此处。
Actor支持拥有一个SceneComponent的层级。每个Actor也拥有一个RootComponent属性,将指定作为Actor根的组件。

Actor自身不含变换,因此不带位置、旋转,或缩放。它们依赖于其组件的变换,具体来说是其根组件的变换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLEX如何搭建个人局域网的视频网站

Plex是一款功能非常强大的影音媒体管理系统,最大的优势是多平台支持和界面优美,几乎可以在所有的平台上安装plex服务器和客户端,让你可以随时随地享受存储在家中的电影、照片、音乐,并且可以实现观看记录无缝衔接,手机…

opencv-14 图像加密和解密

在OpenCV中,图像加密和解密是通过对图像像素进行一系列的变换和操作来实现的 通过按位异或运算可以实现图像的加密和解密。 通过对原始图像与密钥图像进行按位异或,可以实现加密;将加密后的图像与密钥图像再次进行按位异或,可以实…

实例019 以图形按钮显示的界面

实例说明 菜单和工具栏虽然能方便用户操作程序的相应功能,但各有缺点。如果采用按钮式功能菜单,不但美观大方,而且操作灵活。当单击按钮时,用户区将显示相应的操作按钮组。下面介绍图形界面式菜单的设计方法。运行本例&#xff0…

【贪心算法Part03】| 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

目录 🎈LeetCode1005.K次取反后最大化的数组和 🎈LeetCode134.加油站 🎈LeetCode135.分发糖果 🎈LeetCode1005.K次取反后最大化的数组和 链接:1005.K次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k…

学习背景和学习规划

为什么要学习大数据相关的技术? 随着工作年限的增加,JAVA已经陪伴我五年有余了,这些年的工作中我能够明显感觉到一些web开发领域的变化。刚开始工作时公司做的项目大多是一些功能单一、用户量极少的web应用,这种项目对技术和性能的…

分享一个唯美雪花界面

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>雪</title><meta name"viewport" content"widthdevice-width, initial-scale1&…

TKDE论文,跑的改的,GPSCVULDETECTOR

Combining Graph Neural Networks With Expert Knowledge for Smart Contract Vulnerability Detection 论文代码GitHub https://github.com/Messi-Q/GPSCVulDetectorpaper https://ieeexplore.ieee.org/abstract/document/9477066/参考IJCAI 21中AME的数据集 https://gith…

中国地图使用心得

中国地图使用心得 注册地图是注册在echarts对象上而非 自己构建的echarts dom上、。 请求本地json文件 ​ vue项目的public打包时不会动&#xff0c;所以线上和本地地址直接指向了public同级目录&#xff0c;请求时直接相对路径 绘制中国地图时&#xff0c;如何在各个省会地方…

旅游卡系统加盟代理软件开发

旅游行业的不断发展&#xff0c;越来越多的旅行社开始推出各种优惠卡来吸引游客。而随着智能手机的普及&#xff0c;开发一款旅行社优惠卡APP软件成为了一种必然的趋势。 该软件的主要功能是提供旅行社的各种优惠卡信息&#xff0c;包括优惠卡的种类、价格、使用范围、有效…

img标签的onerror事件

img标签中的src图片加载失败&#xff0c;原来的图片位置会出现一个碎片图标&#xff0c;用户体验会下降。 通过百度&#xff0c;可以给img标签加背景图片&#xff0c;代码如下&#xff1a; .headLogo img{display: block;width: 270px;height: 60px;background: url(../image…

无极低代码,免费工具在线实用工具分享

在当今数字化的时代&#xff0c;我们需要尽可能地减少手动操作&#xff0c;提高工作效率。这就是为什么我们需要一些在线工具来帮助我们完成一些繁琐的任务。以下是一些无极低代码网集成的在线工具&#xff0c;可以帮助您更快、更轻松地完成任务。 项目管理 项目周期计算&…

docker+mongodb设置数据库的账号和密码

1、在docker宿主机构建mongodb数据持久化目录 # 数据文件 mkdir -p /usr/local/mongodb/data# 日志文件 mkdir -p /usr/local/mongodb/log2、拉取镜像, 选择官方版本&#xff08;亲测16.x版本的mongodb不可用&#xff0c;可安装指定版本&#xff09; docker search mongo do…

ARP解析MAC地址的全过程(ARP的工作机制)

目录 ARP解析MAC地址的过程&#xff1a; 源码等资料获取方法 以太网环境下&#xff0c;同一个网段的主机之间需要互相知道对方的MAC地址&#xff0c;才能访问。 TCP/IP协议栈从上层到下层的封装过程中&#xff0c;第三层封装需要知道目的IP&#xff0c;第二层封装需要知道目…

Java 设计模式——迭代器模式

目录 1.概述2.结构3.案例实现3.1.抽象迭代器3.2.具体迭代器3.3.抽象聚合3.4.具体聚合3.5.测试 4.优缺点5.使用场景6.JDK 源码解析——Iterator 1.概述 迭代器模式 (Iterator Pattern) 是一种行为型设计模式&#xff0c;它提供一种顺序访问聚合对象&#xff08;如列表、集合等&…

使用亚马逊(AWS)云服务在S3上实现图片缩放功能(CloudFront/S3[AccessPoint/LambdaAccessPoint])

亚马逊云服务中的S3对象存储功能和国内阿里云的oss对象存储使用基本一致。但是涉及到存储内容处理时&#xff0c;两家有些差别。 比如&#xff1a;对于云存储中的图片资源&#xff0c;阿里云比较人性化对于基本的缩放裁剪功能已经帮我们封装好了&#xff0c;只需要在url地址后…

python正则+多线程(代理)+线程池+协程

正则表达式 常用元字符 . 匹配除换行符以外的任意字符 \w 匹配字幕或数字或下划线 \s 匹配任意空白字符 \d 匹配数字 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始 # 开发常用 $ 匹配字符串的结尾\W 匹配非字母或数字或下划线 \D 匹配非数字 \S 匹配非空白符 a|b …

【Express.js】全局变量与配置文件

全局变量与配置文件 通常我们会将一些项目的配置信息写在一个文件内&#xff0c;然后读入内存并使用。在 express 中使用全局变量有多种方案&#xff0c;我们一起看看有哪些常用的方案 准备工作 拷贝第一节的HelloWorld项目 准备一个Resp.js模块&#xff1a; module.expor…

Mongodb 对嵌套文档数组进行查询操作

查询非嵌套文档数组 非嵌套文档的数组&#xff0c;数组由数字、字符串等元素组成。 以下方法对数组字段进行查询操作的示例&#xff0c;包括对数组匹配查询&#xff0c;元素的增、删、改操作&#xff0c;空数组、非空数组查询等。 测试数据 连接到 mongodb 数据库&#xff0…

Bean 作用域与生命周期

Bean 作用域与生命周期 ​ 对于 Spring 来说&#xff0c;核心操作对象就是存和取 Bean &#xff0c;接下来就 Bean 的作用域与生命周期进行探讨。 文章目录 Bean 作用域与生命周期一、作用域的定义1.1、Bean 的6种作用域1.2、Bean作用域设置方法 二、Bean 的生命周期2.1、Bean…

postgresql还原bak

1、第一步肯定是要新建自己还原的目标数据库&#xff0c;例如&#xff1a; 2、进入postgresql的安装目录下的bin目录下 然后地址栏输入cmd进入命令 输入以下 psql -h localhost -U postgres -p 5432 -d SamsinoYardStandard_karamay -f "D:\desktop\zk\20230628.bak&quo…