UE基础 —— 术语
目录
Project
Blueprint
Class
Object
Actor
Casting
Component
Pawn
Character
Player Controller
AI Controller
Player State
Game Mode
Game State
Brush
Volume
Level
World
Project
项目(Project)包含游戏的所有内容,磁盘上的大量文件夹,可命名和组织这些文件夹;在内容浏览器中会显示与磁盘上相同的目录结构;
每个项目都有与之关联的.uproject文件,此文件是创建、打开、或保存项目的方法;可创建任意数量的项目,且并行处理;
Blueprint
蓝图可视化脚本(Blueprint Visual Scripting)系统是完善的gameplay脚本系统,基于节点来创建gameplay元素;类似许多常用的脚本语言,用于在UE中定义面向对象的类或对象;在使用UE的过程中,会经常发现使用蓝图定义的对象;
Class
Class定义UE中一个特定Actor或Object的行为(behaviors)和属性(properties);类从父类继承信息并传递给其子类,可在C++代码内或蓝图内创建类;
Object
Object是UE中最基本的类,包含资产的大量基本功能;在UE中,几乎每件事都继承自Object(或获得一些功能);
在C++内,UObject是所有类的基类,实现了多种功能,如垃圾回收、元数据(UProperty,支持公开变量)、及为加载和存储的序列化;
Actor
Actor是可放到关卡中的任何Object,如Camera、static mesh、player start;Actor支持3D变换,如移动、旋转、缩放,可被C++或蓝图创建和销毁;
在C++内,AActor是所有Actor的基类;
Casting
类型转换(Casting)是一种动作,会获取特定类的Actor并尝试将其作为其他类进行处理;如转换成功,即可访问转换后类的功能;
如有多个类型的volume以不同的方式影响玩家角色,其中一个volume是fire可伤害玩家生命值,当玩家遇到(overlap)关卡中的任何volume时,可将volume转换为fire来访问“伤害玩家”函数;
类型转换,不同于简单的检查某个Actor是否属于某个类,然后返回一个二元值(是或否),那是无法访问该类函数的;
Component
组件(Component)是一种可添加到Actor的功能;当添加一个组件到actor时,actor即可使用组件提供的功能;
- Spot Light Component,可使Actor发射聚光;
- Rotating Movement Component,可使Actor旋转;
- Audio Component,可使Actor播放声音;
组件必须附加到Actor,不可自己单独存在;
Pawn
Pawn是Actor的子类,可作为游戏中的角色;玩家或AI可控制Pawn,作为非玩家角色(NPC);
当Pawn被人类或AI控制的时候,即被视为Possessed,相反未被控制时,即被视为Unpossessed;
Character
Character是Pawn的子类,旨在被用作玩家角色;角色子类包括碰撞设置,双足运动的输入绑定,以及用于控制运动的附加代码;
Player Controller
玩家控制器(Player Controller)获取玩家输入,将其转换到游戏中的互动中;每个游戏至少有一个玩家控制器,一个玩家控制器经常Possess一个Pawn或Character作为玩家在游戏中的化身;
玩家控制器还是多人游戏中的主要网络交互节点,在多人游戏中,服务器会为每个玩家生成一个玩家控制器示例,因为必须对每个玩家进行网络函数调用;每个客户端只拥有与其玩家对应的玩家控制器,且只能使用其玩家控制器与服务器通信;
对应的C++类是PlayerController;
AI Controller
类似Player Controller,AI控制器(AI Controller) Possess 一个Pawn作为非玩家(NPC)在游戏中的化身;
默认Pawn和Character最终都会由基本的AI Controller控制,除非被指定为Player Controller,或被告知不需要为它们自己创建AI Controller;
对应的C++类是AIController;
Player State
玩家状态(Player State)是游戏参与者在游戏中的状态,如人类玩家或模拟玩家的机器人,作为游戏的一部分而存在的非玩家AI没有玩家状态;
玩家状态可包括的玩家信息:
- 名称Name;
- 当前关卡Level;
- 健康Health;
- 分数Score;
- 在抢旗游戏中,玩家当前是否携带旗子;
对多人游戏,所有玩家的玩家状态都存在机器中,可将数据从游戏中复制到客户端以保持内容一致;这不同于玩家控制器,仅存在于玩家的机器中;
对应的C++类是PlayerState;
Game Mode
游戏模式(Game Mode)设置要运行的游戏的规则,包括:
- 玩家如何加入游戏;
- 是否可暂停游戏;
- 任何游戏相关的行为,如获胜条件;
可在Project Settings中设置默认的Game Mode,并在不同的关卡覆盖重载它;无论如何实现Game Mode,每个关卡始终只能有一个Game Mode;在多人游戏中,Game Mode只存在于服务器,规则会被复制(发送)给所有联网客户端;
对应的C++类是GameMode;
Game State
Game State是一种容器,保存着希望在游戏中复制给每个客户端的信息;简言之,即表示每个联网玩家的游戏状态,包括:
- 游戏分数;
- 比赛是否开始;
- 根据场景中玩家人数,需生成多个AI;
在多人游戏中,每个玩家电脑上都只有一个Game State本地实例,Game State本地实例从服务器Game State实例获取更新信息;
对应的C++类是GameState;
Brush
笔刷(Brush)是一个Actor,描述3D形状,如cube、sphere;
可放置笔刷到关卡,并定义关卡几何体(Binary Space Partition or BSP brushes);对快速搭建关卡有用;
Volume
Volume是一种存在边框的3D空间,会根据附加的效果产生不同的用途,如:
- 阻挡体积(Blocking Volumes),一种不可见的体积,用来防止Actor穿过;
- 伤害生成体积(Pain Causing Volumes),会对与其重叠的Actor持续伤害;
- 触发体积(Trigger Volumes),可通过编程让Actor在进入或离开它们触发事件;
Level
关卡(Level)是用户定义的gameplay区域,包含玩家可看见和交互的所有内容,如geometry、Pawns、Actors;
虚幻把每个关卡存为.umap文件,也称为Maps;
World
World是组成游戏所有关卡的容器,可处理关卡流送(Level Streaming),和生成(创建)动态Actor;
相关文章:

UE基础 —— 术语
目录 Project Blueprint Class Object Actor Casting Component Pawn Character Player Controller AI Controller Player State Game Mode Game State Brush Volume Level World Project 项目(Project)包含游戏的所有内容,…...

kubernets学习笔记——使用kubeadm构建kubernets集群及排错
使用kubeadm构建kubernets集群 一、准备工作1、repo源配置:阿里巴巴开源镜像源2、更新软件包并安装必要的系统工具3、同步时间4、禁用selinux5、禁用交换分区swap6、关闭防火墙 二、安装docker-ce、docker、cri-docker1、安装docker-ce2、开启内核转发,转…...

简述MYSQL聚簇索引、二级索引、索引下推
一丶聚簇索引 InnoDB的索引分为两种: 聚簇索引:一般创建表时的主键就会被mysql作为聚簇索引,如果没有主键则选择非空唯一索引作为聚簇索引,都没有则隐式创建一个索引作为聚簇索引;辅助索引:也就是非聚簇索…...

电脑开机后出现bootmgr is missing原因及解决方法
最近有网友问我为什么我电脑开机后出现bootmgr is missing,这个提示意思是:意思是启动管理器丢失,说明bootmgr损坏或者丢失,系统无法读取到这个必要的启动信息导致无法启动。原因有很多,比如我们采用的是uefi引导,而第…...

2024 年 7 月公链行业研报:市场波动中 Solana 表现抢眼,Layer 2 竞争白热化
作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 公链 Research 页面 7 月份,加密货币市场表现活跃,波动幅度较大,这一现象映射了全球金融市场的整体趋势。现货以太坊 ETP 在美国的上市&…...

Python查缺補漏
一、 json.load(s)与json.dump(s)区别 json.loads()将str类型的数据转换为dict类型 json.dumps()将dict类型的数据转成str json.load()从json文件中读取数据 json.dump()将数据以json的数据类型写入文件中 二、json内部要使用双引号 data """{ "fruit&qu…...

c++的类和对象(中):默认成员函数与运算符重载(重难点!!)
前言 Hello, 小伙伴们,我们今天继续c的学习,我们上期有介绍到c的部分特性,以及一些区别于c语言的地方,今天我们将继续深入了解c的类和对象,探索c的奥秘。 好,废话不多说,开始我们今天的学习。…...

Android .kl按键布局文件
1.介绍 一个硬件按键的处理流程大致为:当用户按下或释放一个键时,键盘硬件会生成一个扫描码scan code,然后操作系统读取这个scan code,并将scan code扫描码映射到虚拟键码key code,最后操作系统根据映射的keycode生成…...

Java每日一练_模拟面试题6(JVM的GC过程)
一、JVM虚拟机组成 JVM五大内存区域:程序计数器,Java虚拟机栈,本地方法栈,java堆,方法区。 堆被划分为两个区域:年轻代(Young)、老年代(Tenured)。年轻代又被划分为三个区域:Eden、From Surviv…...

数据防泄密软件推荐|(6大数据防泄密软件推荐!)
很多朋友在后台私信,什么是数据防泄密软件,有哪些数据防泄密软件推荐。 今天小编将从定义出发,深入浅出地介绍这一技术的工作原理、应用场景以及实现方式。 一、什么是文档透明加密? 文档透明加密是一种在用户无感知的情况下对文…...

Codeforces 874 div3 A-G
A. Musical Puzzle 分析 每两个相邻的字母都要录制一段,开个set记录一下,然后输出set的大小 C代码: #include<iostream> #include<set> using namespace std; void solve(){int n;string s;cin>>n>>s;set<strin…...

暑期数据结构 空间复杂度
3.空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟…...

【Android Studio】图标一键生成 Image Asset Studio(一键各机型适配图标生成工具-告别一个一个替换)
文章目录 方法一:原始替换方法二:Image Asset Studio 方法一:原始替换 https://blog.csdn.net/xzzteach/article/details/140821856 方法二:Image Asset Studio 自动替换所有机型图标...

C++ | Leetcode C++题解之第332题重新安排行程
题目: 题解: class Solution { public:unordered_map<string, priority_queue<string, vector<string>, std::greater<string>>> vec;vector<string> stk;void dfs(const string& curr) {while (vec.count(curr) &am…...

使用Python实现简单的网页爬虫:抓取网站标题
使用Python实现简单的网页爬虫:抓取网站标题 在当今数据驱动的时代,网络爬虫(Web Crawler)成为了获取和分析网络数据的重要工具。无论是数据科学、市场分析还是学术研究,爬虫都能帮助我们从互联网上提取有价值的信息。本文将介绍如何使用Python实现一个简单的爬虫,抓取某…...

视觉SLAM ch3—三维空间的刚体运动
如果对于某些线性代数的知识不太牢固,可以看一下我的另一篇博客,写了一些基础知识并推荐了一些视频。 旋转矩阵 单元所需的线代基础知识https://blog.csdn.net/Johaden/article/details/141023668 一、旋转矩阵 1.点、向量、坐标系 在数学中&…...

计算机毕业设计选题推荐-二手图书交易系统-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

4.MySQL数据类型
目录 数据类型 编辑数值类型 tinyint类型 bit类型 float类型 decimal类型 字符串类型 char类型 varchar varchar和char的区别 日期和时间类型 数据类型 数值类型 说明一下:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时&#x…...

快递查询新纪元:一键批量获取多家快递物流详情
跨快递平台批量查询神器:一站式解决信息追踪难题——固乔快递查询助手 在电商行业日益繁荣的今天,快递服务已经成为连接买卖双方不可或缺的一环。然而,随着合作的快递公司日益增多,如何高效地管理和追踪不同平台的快递信息&#…...

docker部署redis和mongoDB
docker部署mongoDB redismongoDB redis # --requirepass指定redis连接时的密码 # --appendonly yes 开启reids的AOF功能 docker run --name redis -p 6379:6379 -d redis:5.0.14 redis-server --requirepass 1234 --appendonly yes# 以/etc/redis/redis.conf的配置信息启动red…...

了解LVS,配置LVS
项目一、LVS 1.集群Cluster Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统 LB:负载均衡 HA:高可用 HPC:高性能计算 2.分布式 分布式是将一个请求分成三个部分,按照功能拆分,使用微服…...

目标检测综述文章解读——Object Detection in 20 Years: A Survey
论文:Object Detection in 20 Years: A Survey 作者:Zhengxia Zou, Keyan Chen, Zhenwei Shi, Yuhong Guo, Jieping Ye 链接:https://arxiv.org/abs/1905.05055 这是一篇关于目标检测综述性文章,自2019年5月第一次提交后ÿ…...

Android make_vbmeta_image的参数值定义
网上生成vbmeta_system.img的命令,分析下这些参数的赋值,key的路径 out/host/linux-x86/bin/avbtool make_vbmeta_image --algorithm SHA256_RSA2048 --key device/mediatek/system/common/key/rsa2048/oem_prvk.pem --padding_size 4096 --rollback_index 0 --...

代码规范 —— 并发编程规范
优质博文:IT-BLOG-CN 【1】【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明: 资源驱动类、工具类、单例工厂类都需要注意。 【2】【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。…...

仪器仪表控制:pymeasure常用模块以及API
下面是对 pymeasure.experiment 模块中各类和方法的详细介绍,包括它们的功能和用法。 pymeasure.experiment 模块详细介绍 Experiment 类 Experiment 类是 Pymeasure 中用于定义和管理实验的核心类。它包含实验的设置、执行和数据记录等功能。 构造函数 class …...

如何理解openfoam案例里面的blockMesh文件里面的simpleGrading
总结: simpleGrading参数分为xyz三个方向。如果你想使得网格在某个方向上更密集,可以在simpleGrading中将该方向的渐变率设置为小于 1 .更稀疏则设置大于1. 一、案例 比如我这个爆炸案例: 对应的blockMeshDIct文件如下: // 定…...

算法竞赛的制胜法宝:被严重低估的位运算究竟有什么用?
大家好,我是干货哥。今天咱们来聊聊一个让很多人都忽略的神技——位运算。等等,你是不是已经准备关掉这篇文章了?你以为位运算只是计算机底层的鸡肋操作?你以为这些不过是编程语言里最基础、最无趣的东西?但真的是这样…...

Qt QTableWidget 去除序号列
ui->tableWidget->verticalHeader()->setHidden(true);//垂直序列号(表左侧)ui.tableWidget->horizontalHeader()->setHidden(true);//水平序列号(表上方)删除后效果图:...

【C++】5.类和对象(3)
文章目录 3.析构函数析构函数的特点: 4.拷贝构造函数拷贝构造的特点: 3.析构函数 析构函数与构造函数功能相反,析构函数不是完成对对象本身的销毁,比如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了&…...

CTF-RCE
eval执行 ?cmdsystemctl("ls"); ?cmdsystemctl("ls /"); ?cmdsystemctl("cat /flag_27523); 命令注入 输入ip试试发先可以执行 127.0.0.1 查看一下看看有社么 127.0.0.1 | ls 试着看看php文件 127.0.0.1 | cat 297581345892.php 貌似这个文件有…...