Unity开发者转UE 新手必读

前言

本页面为熟悉Unity的用户概述了 虚幻引擎(UE)。如果你具备一些Unity知识,而且想学习如何运用自己所学的知识在虚幻引擎中工作,下面各小节将帮助你入门。

下面的截图并排显示了Unity和虚幻编辑器。各个区域采用相同的颜色来表示相同的功能。每个区域上还添加了名称,以便你了解它们在虚幻引擎语境中的称呼。
在这里插入图片描述

术语简表

下表左侧是Unity中常见术语,右侧则是对应的(或近似的)虚幻引擎术语。虚幻引擎(Unreal Engine) 列中的每个术语都链接到专门的页面,你可以前往这些页面了解详情。

类别Unity虚幻引擎
Gameplay类型Component组件
GameObjectActor
TransformSceneComponent,RootComponent
MonoBehaviorActorComponent
Prefab蓝图类
编辑器界面Hierarchy Panel世界大纲视图
Inspector细节面板
Project Browser内容浏览器
Scene View关卡视口
网格体Mesh静态网格体
Skinned Mesh骨骼网格体
材质Shader材质、材质编辑器
Material材质实例
特效Particle Effect特效、粒子、Niagara
游戏界面UIUMG(虚幻示意图形)
动画Animation骨骼网格体动画系统
Mecanim动画蓝图
SequencesSequencer
2DSprite EditorPaper2D
编程C#C++
Script、Bolt蓝图
物理RaycastLine Trace、Shape Trace
Rigidbody碰撞、物理
运行时平台iOS Player、Web Player支持的平台

项目和文件

和Unity项目一样,虚幻项目也保存在专门的目录结构中,并且有自己的项目文件,扩展名为 .uprojectfile 。你可以 双击 .uproject 文件,将游戏加载到虚幻编辑器中,或 右键点击 查看更多选项。

项目目录包含不同子目录,保存了游戏的资产内容和源代码,以及各种配置文件和二进制文件。其中最重要的就是 Content 文件夹和 Config 文件夹,前者保存项目的所有资产,后者保存项目的配置(.ini)文件。

我的资产应该放在哪里?

在虚幻引擎中,每个项目都有一个 Content 文件夹。这类似于Unity项目的 Assets 文件夹,是你保存游戏资产的地方。

如果你的虚幻引擎项目包含C++类,它们将位于项目在磁盘上的 Source 文件夹。

支持哪些文件格式?

虚幻引擎5支持一些最常见的文件类型:

资产类型支持的格式
3D.fbx、.obj
纹理.png、.jpeg、.bmp、.tga、.dds、.exr、.psd、.hdr
声音.wav
字体.ttf、.otf
视频.mov、.mp4、.wmv

场景文件?

在Unity中,你将GameObject放在场景中,然后将其保存为Scene场景资产文件。 虚幻引擎使用 Map地图文件(Map file) ,它类似于Unity中的场景。 Map文件保存了 关卡 的数据、关卡中对象、光照数据和某些关卡特定的设置信息。

项目设置?

从虚幻编辑器的主菜单,转至 编辑(Edit)> 项目设置(Project Settings) 。
Unity还有叫做"玩家设置(Player Settings)"的部分。在虚幻引擎中,我们叫 平台设置(Platform Settings) ,你可以在 项目设置(Project Settings) 窗口的 平台(Platforms) 分段下配置。

源文件在哪里?

在Unity中,你将C#源文件放在 Assets 文件夹中。在虚幻引擎中,你的源文件放在不同的位置,具体取决于你创建的虚幻项目的类型:

C++项目 在虚幻项目目录中有一个 Source 文件夹。Source 文件夹包含各种文件,包括C++源文件(.cpp)和头文件(.h),以及一些编译用的脚本(Build.cs、Target.cs)。

蓝图项目 没有 Source 文件夹。蓝图可以放在虚幻项目的 Content 文件夹中的任意位置。

如果你想将C++代码添加到蓝图项目,请从虚幻编辑器的主菜单转至 工具(Tools)> 新C++类(New C++ Class) 。

在 内容浏览器(Content Browser) 中双击C++源文件,可以在Visual Studio(Windows)或Xcode(macOS)中打开。

从GameObject到Actor

GameObject在哪里?
在Unity中,GameObject是可以放在世界中的"东西"。虚幻引擎中对应的概念是 Actor 。在虚幻编辑器中,你可以从 主工具栏(Main Toolbar) 中的 创建(Create) 菜单将新的空Actor拖入视口中,如下所示:

你虽然可以通过空Actor来制作游戏,但虚幻引擎还提供了各类特殊的Actor,并预置了它们的特性,例如 Pawn(用于可以由玩家或AI控制的Actor),或 角色(用于需要复杂移动和交互的可控制玩家角色)。就像空Actor那样,你可以将这些特殊类型的Actor放入视口中,然后添加或自定义其属性和组件。

虚幻引擎中的Actor与Unity中的GameObject稍有不同。在Unity中,GameObject是C#类,不能直接扩展。在虚幻引擎中,Actor是C++类,可以使用继承来扩展和自定义。下文会详细介绍继承的概念。

组件在哪里?

在Unity中,你使用组件向GameObject添加功能。在虚幻引擎中,你将组件添加到Actor。你在关卡中放入空Actor之后,将其选中,然后点击 细节(Details) 面板中的 添加组件(Add Component) 按钮,然后选择要添加的组件。

在下面的视频中,我们会创建一把火炬,首先放入一个空Actor,然后添加一个网格体组件作为基座,接着添加光源和粒子系统来创建火焰。

在Unity中,GameObject以列表形式保存组件。在虚幻引擎中,Actor以 层级(Hierarchy) 形式保存组件,而且组件之间相互绑定。你可以在以上示例中看到,光源和粒子与静态网格体相互绑定。这会带来一些重要的影响,本页面的 复合对象 小节会进行说明。

从Unity的Prefab到虚幻引擎的蓝图类

在Unity中,你使用组件构建一组GameObject,然后从中创建预制件(prefab)。接着,你可以在世界中放入预制件的实例,或在运行时将其实例化。

虚幻引擎有相同类型的工作流程,但其基于蓝图类:

一.使用组件构建Actor。
1.在Actor的 细节(Details) 面板中,点击 蓝图(Blueprint)> 添加脚本(Add Script) ,向其添加蓝图。
2.选择一个位置保存你的新蓝图类。
3.点击 创建蓝图(Create Blueprint)就可以了!
你可以从 内容浏览器(Content Browser) 访问新蓝图类。双击 可直接编辑,或将其拖入打开的关卡以放入游戏世界中。

Unity中的Script组件和MonoBehaviour去哪里了?

在Unity中,你通过将脚本组件放在GameObject上来添加C#脚本。你通过创建从MonoBehaviour继承的类来定义该组件的功能。

虚幻引擎的工作方式相同:你可以使用蓝图或C++创建全新的组件类,并将其添加到任意Actor。类似于将蓝图添加到Actor,你可以通过以下两种方式之一将组件添加到Actor:

1.从Actor的 细节(Details) 面板。
2.从 编辑Actor(Edit Actor) 窗口。

将新组件添加到Actor的步骤如下:

1.从Actor的 细节(Details) 面板或 编辑Actor(Edit Actor) 窗口,点击 添加组件(Add Component) 。

2.选择要添加到Actor的组件。你可以创建新组件,或从预定义组件列表中选择,例如光源、音频、粒子系统,等等。
将组件添加到Actor

在Unity中,创建新的MonoBehaviour时,你会收到一个骨架类文件,其中包含 Start() 函数和 Update() 函数。

在虚幻引擎中,新组件有类似的函数:

1.InitializeComponent(),其作用与Unity的 Start()` 函数相同。

2.TickComponent(),其作用与Unity的 Update()` 函数相同。

在蓝图组件中,这些函数显示为可视化节点。

可编写脚本的Actor蓝图类

你的新Actor蓝图类会有自己的蓝图可视化脚本。这样一来,你就可以将逻辑添加到整个对象,而不仅仅是单个组件。结合继承结构关系(稍后下文会解释),这会为你在设计游戏时提供很多灵活性。

除了支持可视化脚本的蓝图类之外,虚幻引擎还支持使用代码来实现C++类。下面并排比较了Unity和虚幻引擎代码,还给出了具有相同作用的虚幻引擎蓝图。
在这里插入图片描述

变换组件Transform

在Unity中,每个GameObject都有一个Transform组件,用于指定该GameObject在世界中的位置、旋转和比例。

虚幻引擎也一样,Actor有 根组件(Root Component),可以作为场景组件的任意子类。场景组件(Scene Component) 指定了Actor在世界中的位置、旋转和比例,这些属性也应用于以该场景组件为父节点的所有组件。很多有用的组件都是场景组件的子类,因此让它们具有位置信息是非常有用的!

即使你放置一个空Actor,虚幻引擎也会为该Actor创建默认场景根(Default Scene Root),这是一个最简单的场景组件。如果你放入新的场景组件,它将替换默认场景根。

复合对象

在Unity中,你可以通过构建GameObject层级以及绑定它们的变换组件来创建复合对象。
在这里插入图片描述
在虚幻引擎中,你可以通过让组件按照层级关系相互嵌套,来创建复合游戏对象。
在这里插入图片描述
如图所示,你可以让场景组件互相附加来得到一个相互嵌套的层级关系,因为它们有变换,这类似于Unity中的变换绑定。Actor组件(所有组件的基类)只能直接绑定到Actor本身。

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

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

相关文章

用友 U8+ 控制金额、单价等字段权限设置

进入路径 系统服务——权限——数据权限控制设置 本功能是数据权限设置的前提,用户可以根据需要先在数据权限控制设置中选择需要进行权限控制的对象。 数据权限的控制分为记录级和字段级两个层次,对应系统中的两个页签"记录级"和"字段…

LabVIEW在光学与光子学实验室中的应用

光学与光子学实验室致力于光学和光子学前沿领域的研究,涉及超快光学、非线性光学、光纤通信、光子晶体等多个方向。实验室需要高精度的实验控制和数据采集系统,以进行复杂的光学实验,并对实验数据进行实时处理和分析。 项目需求 实时控制与监…

Vue + SpringBoot 实现文件的断点上传、秒传,存储到Minio

一、前端 1. 计算文件的md5值 前端页面使用的elment-plus的el-upload组件。 <el-upload action"#" :multiple"true" :auto-upload"false" :on-change"handleChange" :show-file-list"false"><FileButton content&…

telnet_h3c_ap

import telnetlib import time # 定义交换机参数 HOSTS [10.61.168.x, ]for HOST in HOSTS:tn telnetlib.Telnet(HOST,timeout22)tn.read_until(b"Password: ")tn.write("h3capadmin".encode(ascii) b"\n") ##h3c默认密码time.sleep(0.2)tn.…

JS对象、数组、字符串超详细方法

JavaScript 对象方法 对象创建的方式 对象字面量 var dog1 {name: "大黄",age: 2,speak: function () {console.log("汪汪");}, };使用Object构造函数 var dog2 new Object(); dog2.name "大黄"; dog2.age 2; dog2.speak function () …

BIO、NIO编程深入理解与直接内存、零拷贝

网路编程基本常识 一. Socket 什么是Socket Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。它提供了应用层进程利用网络协议交换数据的机制&#xff0c;是应用程序与网络协议栈进行交互的接口。 说白了&#xff0c;Socket就是把TCP/IP协议族进行封装…

iOS之如何创建.a静态库

番外&#xff1a;想要查看如何创建.framework静态库可前往看我​​​​​​​iOS之如何创建.framework静态库-CSDN博客这篇文章。 一、创建静态库项目 ①、打开 Xcode 并创建一个新的 Xcode 项目。 ②、选择 "macOS" -> "Framework & Library" -&…

Nginx基础概念和常用操作

文章目录 1. 安装、启动、连接2. 快速尝试部署网站3. 配置文件1. nginx.conf全局配置事件模块HTTP 模块性能优化建议 2. default.confserver 块基本设置日志设置根路径设置 4. 反向代理1. 模拟3个Web2. 链接 5. 负载均衡1. 加权轮询&#xff0c;Weighted Round Robin2. 最少连接…

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include"CommunityToolkit.Mvvm" Version"8.2.2" /><PackageReference Include"Microsoft.Extensions.Hosting" Version"8.0.0" /><PackageReference Include&q…

一张顶20张H100,速度10倍于B200:史上最快AI芯片,华人制造

在谈到 AI、大模型、算力等关键词时&#xff0c;如果要提及硬件产品&#xff0c;很多人应该会不假思索的说出英伟达。的确&#xff0c;在全球都缺算力的环境下&#xff0c;英伟达的地位是独特又难以撼动的。然而就在近日&#xff0c;有一家公司带着自己的 AI 芯片来叫板了。昨天…

吴恩达机器学习 第三课 week1 无监督学习算法(下)

目录 01 学习目标 02 异常检测算法 2.1 异常检测算法的概念 2.2 基于高斯模型的异常检测 03 利用异常检测算法检测网络服务器的故障 3.1 问题描述 3.2 算法实现 3.3 问题升级 04 总结 01 学习目标 &#xff08;1&#xff09;理解异常检测算法&#xff08;Anomaly Det…

lvgl v8.3 windows仿真

1&#xff0c;下载安装codeblocks20.03 https://zenlayer.dl.sourceforge.net/project/codeblocks/Binaries/20.03/Windows/codeblocks-20.03mingw-setup.exe?viasf1 2&#xff0c;下载代码 git clone --recurse-submodules https://github.com/lvgl/lv_port_win_codeblock…

双指针算法——滑动窗口

前言&#xff1a; 滑动窗口本质上也是利用双指针来解决特定情况下的问题。滑动窗口算法思想是通过俩个指针&#xff0c;定义在左边和右边&#xff0c;俩指针同向运动&#xff0c;保持着一个像“窗口”一样的双指针来不停的压缩或者扩展来移动“窗口”&#xff0c;从而找到特定…

DigitalOcean Droplet 云主机新增内置第五代 Xeon CPU 机型

DigitalOcean 近期宣布&#xff0c;在其高级 CPU 服务器&#xff08;Premium CPU-Optimized Droplet&#xff09;队列中引入英特尔第五代Xeon可扩展处理器&#xff08;代号为 Emerald Rapids&#xff09;。作为英特尔产品线中的最新一代用于数据中心工作负载的处理器&#xff0…

LangCell:用于细胞注释的语言-细胞预训练模型

细胞身份包括细胞的各种语义&#xff0c;包括细胞类型、pathway信息、疾病信息等。从转录组数据中了解细胞身份&#xff0c;例如注释细胞类型&#xff0c;是一项基础任务。由于语义是由人类赋予的&#xff0c;如果没有cell-label pair提供监督信号&#xff0c;AI模型很难有效地…

小项目——MySQL集训(学生成绩录入)

ddl语句 -- 创建学生信息表 CREATE TABLE students (student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 学生ID,name VARCHAR(50) NOT NULL COMMENT 学生姓名,gender ENUM(男, 女) NOT NULL COMMENT 性别,class VARCHAR(50) NOT NULL COMMENT 班级,registration_date DATE CO…

Redis实战—基于setnx的分布式锁与Redisson

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于SETNX的分布式锁 SETNX锁代码实现 修改业务代码 SETNX锁误删问题 SETNX锁原子性问题 Lua脚本 编写脚本 代码优化 总结 Redisson 前言…

基于STM32的温湿度检测TFT屏幕proteus恒温控制仿真系统

一、引言 本文介绍了一个基于STM32的恒温控制箱检测系统&#xff0c;该系统通过DHT11温湿度传感器采集环境中的温湿度数据&#xff0c;并利用TFT LCD屏幕进行实时显示。通过按键切换页面显示&#xff0c;通过按键切换实现恒温控制箱的恒温控制。为了验证系统的可靠性和稳定性&…

png格式快速压缩该怎么做?在电脑压缩png图片的方法

png格式的图片如何快速压缩变小呢&#xff1f;现在网络的不断发展&#xff0c;图片是日常用来分享展示内容的一种常用手段&#xff0c;其中使用最多的一种图片格式就是png&#xff0c;png格式具有无损压缩支持透明底的特性&#xff0c;在很多的场景下都会使用。 现在图片的清晰…

Arduino - 线性执行器(支撑或滑杆)

Arduino - 线性执行器(支撑或滑杆) Arduino - 执行器 In this tutorial, we are going to learn: 在本教程中&#xff0c;我们将学习&#xff1a; How linear actuator works 线性执行器的工作原理How to make linear actuator extend or retract. 如何使线性执行器伸展或缩…