UE4 框架
转自:http://www.cnblogs.com/NEOCSL/p/4059841.html
有很多人是从UE3 接触到Unreal,如果你也对UE3非常了解,便能很快的上手UE4。但是,UE4的开发模式还是有所不同的。
1.谈谈过往,UE1和UE2。
我知道在那个时候咱们一样挥霍美好的童年在玩游戏而不是做游戏,当然做游戏更挥霍你的青春XD
UE1和UE2是为FPS设计的,使用UnrealScript来进行编程。说实话UnrealScript是最好的学习面向对象编程的语言。
2.UE3
添加了kismet。更多的模块类。但是仍旧以FPS为核心设计的
3.UE4
UnrealScript被下岗了,恭喜你咱们下岗了~。变成了Blueprint,这时候关卡设计师们大声叫好:”不再需要求着愚蠢的程序员帮我们实现系统了,哈哈“。
游戏类型随意,Paper2D让你轻松制作2维游戏。
还有许多工程实例供你学习。
好了咱们向前看~
5.UnrealScript vs.C++ vs.Blueprint
这是许多人的疑问,看好戏吧
6.UnrealScript
①面向对象编程,和C,C++,Java比较像。但是还是有区别的
②虚拟机编译,这和java一样,方便移植,缺点是速度慢效率低
③添加了许多有用的特性,State(说实话状态写AI简直是最完美的方案,我的游戏AI便是强依赖State).Timers(非常方便延迟执行),Delegates(容易引起崩溃,注意使用哦)
7.Blueprint
①对艺术家和设计师来说就是逃离恶心程序员”这不可能实现“的最有力武器,你可以做到”你行你上啊~“。Kismet的伙计应该很容易上手
②还是虚拟机,和UnrealScript是一样的。因此,如果你很重视一个环节的执行效率,那么就是用C++
③和UnrealScript一样,但一些方面比UnrealScript强。例如你在添加Component中时可以不用关闭编辑器直接修改模型。实在是工农大解放啊...
8.C++
①UE编程始终可以基于C++,除非你用UDK,你这个穷鬼XD
②紧密结合虚拟机,因为Blueprint变量和方法有时是需要和C++交互的
③为了替换UnrealScript为开发者已经大幅提升了?
9.UE4基础元素
①Actor
我们又见面了Actor,Actor是在一个关卡中持续存在的,通常他包含几个Actor组件。支持网络复制和多人游戏。
- Actor不包含位置,方向。这些东西在Root Component中存储。对于UE3 中的Pawn也由PlayerCharacter继承了,因为他有MovementComponent包含跳跃,速度等属性
- 由SpawnActor() 生成
- 必须由Destroy来销毁
- 在游戏中不能被垃圾回收
②什么是ActorComponent?
- 能被复用的功能可以添加进入Actor
- 包含一些最有趣的函数和事件
- 能被Blueprint访问~
③组件例子
- Scene Component 添加形状和连接
- Primitive Component 添加碰撞和渲染
- UAudioComponent,UArrowComponent,UInputComponent,ULightComponent,UMeshComponent,UParticleSystemComponent等等...
- 写过UnrealScript会对组件深有体会
④PrimitiveComponent组件事件举例
- Hit- 再碰到强的时候调用
- Begin/EndOverlap -进出一个Trigger
- Begin/EndCursorOver 没用过
- Clicked/Released 不解释
- InputTouchBegin/End
- Begin/EndTouchOver
10.你就只认得个Pawn
- Pawn就是你的阿凡达
- 这个傀儡被Controller操纵着
- 通常处理运动和输入控制
- 实现HP的好位置
- 通常没有运动或是输入反馈的代码,你可以在Controller中写
11.来见见老朋友Controller
- 控制Pawn的傀儡师
- 可以理解做就是玩家
- AIController就是控制AI的
- 一次只能Possess一个Pawn
- 当Pawn死的时候可以继续存在,在我的游戏中让pawn死亡,游戏假重置,就是controller直接Possess一个新Pawn的
- PlayerControlelr
- 玩家阿凡达的接口
- 处理点击,手柄,键盘
- 显示和隐藏鼠标指针
- 不需要Pawn表示的好地方
- 菜单,语音聊天...
一些别的有用选项
12.Character
这是使用过UE3的人学习UE4最困惑的地方,有了Pawn为什么还要扩展PlayerCharacter?
- 这是一种能走的Pawn,因为包含了MovementComponent
- 和上边一样,添加了一些有用的组件
- 处理碰撞
- 处理客户端角色运动
- 比UE3有更大的升级
13.HUD
- 还有一些绘制API
- 没有构建HUD的工具
- UMG直接提供所有的东西,我讨厌老旧UI系统。UMG让人解放了
14.GameMode
- 还记得GameInfo吗,实现游戏规则用的
- 配置Pawn,Controller和HUD是谁
- 能在任何地方被访问,我来告诉你API GetGameMode()
- 只在服务器和单机实例中存在
- GameState是被用来在客户端复制状态用的
- 默认游戏类型可以在Project Settings中被设置
- 每个地图都有自己的GameMode,需要你亲手设置
15.Input
- 这是我对UE4最赞赏的改进之一,你直接在编辑器中添加Bind而不是让你眼花的配置文件中
- 在Project Settings中设置去吧
- 获取指令
- PlayerController
- Level Blueprint
- Possessed Pawn
16.碰撞
- 有多种碰撞处理的方法
- 线性检测 Line Trace
- 体积扫过 Geometry Sweeps
- 重叠测试 Overlap tests
- 简单的碰撞
- Box,胶囊,球,多边形
- 在运动和物理模拟的时候都需要
- 复杂碰撞
- 实际用于多边形
- 武器和反向动力
UE4 框架的更多相关文章
- ue4框架C++语法汇总文章
1.Run external .exe file TCHAR* url = TEXT("C:\\windows\\system32\\calc.exe"); FPlatformPr ...
- ue4标签测试与总结(UPROPERTY)
学习UE4框架中的标签,本篇是总结成员变量标签UPROPERTY. 引擎版本:4.12.5 前期准备: 1.新建项目,C++空模板,新建C++类,继承AActor,名称MyActor. 使用TestA ...
- VA的自动补全Snippet
开始旅程 如果您想要自定义补全,比如在使用UE4框架时,想输入一个方法的注释模板,可以这么做. 方法1:点击VAssistX -> insert VA Snippet -> Edit VA ...
- 开源工具 | 手游自动化框架GAutomator,新增iOS系统和UE4引擎支
WeTest 导读 GAutomator是腾讯WeTest推出的手游自动化测试框架,已用于腾讯多个手游项目组的自动化测试. 1.GAutomator诞生背后 研究过手游自动化测试的同学都知道,虽然市场 ...
- 《Inside UE4》目录
<Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...
- UE4入门与精通
由于目前在使用UE4引擎,多少也有一些心得,比如在日常使用中会遇到一些问题.坑(潜规则)或者一些使用技巧等.本人决定开一个大坑,主要有两个目的:一是可以自己做个记录,二是可以给大家提供一些参考吧.主要 ...
- 《Inside UE4》-2-GamePlay架构(一)Actor和Component
<Inside UE4>-2-GamePlay架构(一)Actor和Component <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...
- 浅谈UE4引擎
首先要说的是,游戏开发是一项高度复杂的代码开发工作,编程语言只是最基本的知识,它涉及的内容还有计算机图形学.3D数学.物理学等复杂的学科.但是若需要学完这么多知识才能开发游戏,恐怕许多人都已经断气了, ...
- UE4新手编程之创建C++项目
虚幻4中常用的按键和快捷键 虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷.下面将列举它们出来: 按键 动作 鼠标左键 选 ...
随机推荐
- Gitlab来做代码review
Gitlab来做代码review 代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现 ...
- tp框架知识 之(链接数据库和操作数据内容)
框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下. 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写con ...
- FPGA学习记录 - Quartus II 未使用管脚设置为三态输入
未使用管脚设置为三态输入 Assignments -> Device 或双击器件
- javascript实现日期时间动态显示
.aspx代码例如以下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Def ...
- 一起来学linux:进程
简单来说,每当执行一个程序或者命令,启动事件的时候都会得到一个PID,也就是进程ID.比如用户登陆的时候就会得到一个PID.如下所示.两个用户zhf和root在登陆后分别获得PID 3212和3214 ...
- iOS 多语言支持
如果app将来面向国际化,比如说中国需要使用,美国也需要使用,此时就需要考虑app支持多国语言 具体方式如下 首先在Supporting Files中新建 Strings 起名: Localizabl ...
- 安装wampserver 计算机丢失msvcr100.dll
刚刚重新安装了Windows 7 64位系统,再安装Wampserver 2时却提示系统错误,如下图所示: 在网上下载了MSVCR100.dll放到system32文件夹下依然没有用. 百度搜索了一下 ...
- 关于NIO编程
NIO概述 什么是NIO? Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式. Ja ...
- bootstrap.min.css.map
问题:引入bootstrap..min.css的时候出现了URL:bootstrap.min.css.map 404的错误. 解决方法:将bootstrap.min.css里的最后一行/*# sour ...
- Strom 消息处理机制 中英对照翻译 (Storm如何保证消息被完全处理)
官方链接: http://storm.incubator.apache.org/documentation/Guaranteeing-message-processing.html What does ...