【UE5】五大基类及其使用

UObject

UObject表示对象,准确来说,虚幻引擎中的对象基础类为UObject
UObject提供了以下功能:

  1. 垃圾收集(Garbage collection)
  2. 引用自动更新(Reference updating)
  3. 反射(Reflection)
  4. 序列化(Serialization)
  5. 自动检测默认变量的更改(Automatic updating of default property changes)
  6. 自动变量初始化(Automatic property initialization)
  7. 和虚幻引擎编辑器的自动交互(Automatic editor integration)
  8. 运行时类型识别(Type information available at runtime)
  9. 网络复制(Network replication)

使用UObject是因为要使用上述某些功能,而不是因为他是UE对象基类

Actor

· 所有可以放入关卡的对象都是Actor,比如摄像机、静态网格体、玩家起始位置。Actor支持三维变换,例如平移、旋转、缩放,你可以通过游戏逻辑代码(C++或蓝图)创建(生成)或销毁Actor
· 在C++中,AActor是所有Actor的基类
· Actor继承自UObject
· Actor能够被挂载组件
· Actor拥有Tick的能力
· 组件是Component,并不是Actor
· Actor并不自带Transform,Actor的Transform来自于其RootComponent
· 绝大部分在场景中的对象,无论是有形的还是无形的,都是Actor

Component

· 组合大于继承
· 为了弱化Actor的继承链,提出了Component的概念
· Component继承自UObject,比Actor轻量
· 主要存在两种Component,SceneComponent和ActorComponent,SceneComponent在场景中存在Transform,也能有坐标系父子关系
· UE更倾向于编写功能单一的Component,而不是一个整合了其他Component的大管家Component
· Component应该作为Actor较独立可复用性功能的载体,Actor本身也拥有数据存储能和逻辑实现能力,主要用于实现游戏业务逻辑
· Actor在世界中的位置属性、父子关系,全权由Component接管
在这里插入图片描述

Pawn

· 继承自Actor
· Pawn相比于Actor,可以被Controller控制
· 相比于Actor的逻辑,Pawn通过Controller解耦了游戏的业务逻辑,将Pawn自身实现的逻辑和上层控制逻辑分开
· 解耦:耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象,解耦就是用某种方法将两种体系分离开来处理
问题

Controller

· Controller继承自Actor(为了使用Actor的挂载组件、Tick等功能)
· AController
· Controller里只是保存了一个Pawn指针(一对一)
· Controller在逻辑上应该实现玩家逻辑
· Controller的Transform作用
虚幻引擎核心设计:MVC
在这里插入图片描述

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

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

相关文章

火电厂电气部分设计

摘要 本文首先根据任务书上所给系统与线路及所有负荷的参数,分析负荷发展趋势。从负荷增长方面阐明了建站的必要性,然后通过对拟建变电站的概括以及出线方向来考虑,并通过对负荷资料的分析,安全,经济及可靠性方面考虑…

计算机基础知识57

前后端数据传输的编码格式(contentType) # 我们只研究post请求方式的编码格式: get请求方式没有编码格式-- index?useranme&password get请求方式没有请求体,参数直接在url地址的后面拼接着 # 有哪些方式可以提交post请求:f…

构建个性化预约服务:预约上门服务系统源码解读与实战

随着社会的发展,预约上门服务系统在满足用户需求、提升服务效率方面发挥着越来越重要的作用。在本文中,我们将深入研究预约上门服务系统的源码,通过实际的技术代码示例,揭示系统内部的关键机制,以及如何在实际项目中应…

qml动画过渡Transition

文章目录 基本概念使用 `Transition`示例动画过渡高级用法示例:复杂动画过渡解释进阶用法在 QML 中,Transition 元素用于定义状态之间过渡时的动画。这是 QML 强大的状态机制的一部分,允许开发者创建平滑且吸引人的用户界面交互。使用 Transition,您可以定义当元素从一个状…

深入了解接口测试:方法、工具和关键考虑因素(一)

接口测试是软件测试中的一项重要工作,它涉及到系统与系统之间的交互点。接口可以是外部接口,也可以是内部接口,包括上层服务与下层服务接口以及同级接口。在接口测试中,我们需要确保接口能够按照预期的方式进行通信和交互&#xf…

【攻防世界-misc】can_has_stdio?

1.用记事本打开文件是这样子的, 这是一段BF(Brainfuck)编程语言代码,属于一种极简化的编程语言,用于演示计算机程序设计概念。这段代码包含了一些操作符,如">"表示指针向右移动,&q…

【C++破局】泛型编程|函数模板|类模板

​作者主页 📚lovewold少个r博客主页 ⚠️本文重点:c模板初阶知识点讲解 👉【C-C入门系列专栏】:博客文章专栏传送门 😄每日一言:花有重开日,人无再少年 目录 前言 泛型编程 函数模板 函数模…

用Java实现简易的图书管理系统(超详细)

目录 1.设计背景 2.设计思路 3.模块展示及代码演示 3.1 Book类的实现 3.2 BookList类的实现(书架) 3.3 异常类的实现(OperationException) 3.4 用户类的实现 3.5 操作接口的实现(定义规范) 3.6 操作类的具体实现 3.6.1 增加操作 3.6.2 查找操作 3.6.3 删除操作 3.6…

标签打印机打印标签时出现,数据处理过程中错误 无法设置项目 图片1的内容无法打印

环境: Win10专业版 NiceLabel Designer 10.1 问题描述: 标签打印机打印标签时出现,数据处理过程中错误 无法设置项目 图片1的内容无法打印 解决方案: 1.删除标签部分文字打印测试 还是一样(未解决) …

已解决java.lang.IllegalStateException异常的正确解决方法,亲测有效!!!

已解决java.lang.IllegalStateException异常的正确解决方法,亲测有效!!!文章目录 报错问题解决思路解决方法交流 报错问题 java.lang.IllegalStateException 解决思路 java.lang.IllegalStateException通常表示程序的当前状态与…

jenkins 参数构建

应用保存 [rootjenkins-node1 .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved i…

【嵌入式面试】2022年嵌入式经典面试题汇总(C语言)

📜作者:不想脱发的基兄 📺专栏:《嵌入式面试》 📣格言:不管前方的路有多苦,只要走的方向正确,不管多么崎岖不平,都比站在原地更接近幸福。 前言: 2022年秋招我…

C++之初始化列表详细剖析

一、初始化列表定义 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(mont…

OpenCV快速入门:图像分析——图像分割和图像修复

文章目录 前言一、图像分割1.1 漫水填充法1.1.1 漫水填充法原理1.1.2 漫水填充法实现步骤1.1.3 代码实现 1.2 分水岭法1.2.1 分水岭法原理1.2.2 分水岭法实现步骤1.2.3 代码实现 1.3 GrabCut法1.3.1 GrabCut法原理1.3.2 GrabCut法实现步骤1.3.3 代码实现 1.4 Mean-Shift法1.4.1…

论文阅读 (106):Decoupling maxlogit for out-of-distribution detection (2023 CVPR)

文章目录 1 概述1.1 要点1.2 代码1.3 引用 2 预备知识3 方法3.1 MaxLogit3.2 改进MaxCosine和MaxNorm3.3 DML 1 概述 1.1 要点 题目:解耦最大logit分布外检测 (Decoupling maxlogit for out-of-distribution detection) 方法: 提出了一种心机基于log…

多级缓存快速上手

哈喽~大家好,这篇来看看多级缓存。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【微服务】 🥉与这篇相关的文章: JAVA进程和线程JAVA进程和线程-CSDN博客Http…

不做机器视觉工程师,转行,转岗的建议与想法

正所谓外行看热闹,内行看门道。提前咨询前辈们,多问问,多看看。要做就做,一定要提前做好防范。 无论你是要转行或者是转岗,看你有没有本钱和试错成本 有些人,家庭好,可以一直去试错和从头再来。…

无线WiFi安全渗透与攻防(国外篇):使用 Aircrack-ng 破解 WEP 密码

使用 Aircrack-ng 破解 WEP 密码 使用 Aircrack-ng 破解 WEP 密码一. 用 Aircrack-ng 破解 WEP 密码 - 背景知识网卡与网卡芯片WEP 加密协议WEP 所使用的身份认证协议二. 使用 Aircrack-ng 破解 WEP 密码 - 破解原理破解机理三. 使用 Aircrack-ng 破解 WEP 密码 - aircrack-ng …

学习.NET验证模块FluentValidation的基本用法(续1:其它常见用法)

FluentValidation模块支持链式验证方法调用,也就是说,除了 RuleFor(r > r.UserName).NotEmpty()调用方式之外,还可以将对单个属性的多种验证函数以链式调用方式串接起来,比如UserName属性不能为空,长度在5~10之间&a…

__attribute__((constructor))用法解析

__attribute__((constructor))是GCC和兼容的编译器中的一个特性,用于指示编译器将一个函数标记为在程序启动时自动执行的初始化函数。 同样的还有__attribute__((destructor))在main()函数后调用。 当你在一个函数声明或定义前加上__attribute__((constructor))属…