文档章节

UE4 框架

robslove
 robslove
发布于 2016/08/11 15:14
字数 1337
阅读 111
收藏 3

  有很多人是从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,胶囊,球,多边形
    • 在运动和物理模拟的时候都需要
  •   复杂碰撞
    • 实际用于多边形
    • 武器和反向动力

本文转载自:

robslove

robslove

粉丝 5
博文 197
码字总数 83957
作品 0
成都
程序员
私信 提问
Unreal Engine 4.23 发布,虚幻引擎

虚幻引擎是一个面向 PC、Xbox 360、iOS 和 PlayStation 3 的完整开发框架,其中提供了大量核心技术、内容创建工具以及支持基础设施内容。4.23 版本已经发布。 影视制作发生了转变:此版本中,...

afterer
09/06
2.1K
1
UE4如何获取/下载虚幻4(Unreal Engine4)源码

背景叨叨叨 之前受同事的影响,对UE4产生了迷之兴趣,想尝试着了解一下,于是在游戏蛮牛社区的UE4专栏找到了一篇新手入门引导教程,其中谈及下载源码,但是其推荐链接已无效便想到Github上找...

代码咖啡
2018/06/18
0
0
UE4 ShooterGame Standalone Dedicated Server(Window

UE4 ShooterGame Standalone Dedicated Server(Window 漫漫路2017-12-135 阅读 windowSERVER 以下内容都是基于Unreal Engine版本:4.18.2-0+++UE4+Release-4.18。 操作系统是:Window10 x64专......

漫漫路
2017/12/13
0
0
VR这么火,你选UE4还是Unity 3D?

在虚拟现实大热的今天,开发者界也出现了“甜豆花”与“咸豆花”之争。在游戏开发者制作游戏时,面对都是免费、都支持各大平台的UE4和Unity 3D,选择何种游戏引擎,似乎有点难以抉择,左手U...

1405048499729402
02/21
0
0
UE4 行走/飞行切换,上升下降

双击创建的人物 先将默认的 land movement mode 改成 walking, 蓝图切换到 Event Graph 右键添加功能键切换行走/飞行模式 现在添加上升,下降的功能 先创建一个Axis Mappings 来触发上升下降...

5457f2
2016/08/18
632
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
29分钟前
4
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
32分钟前
4
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
35分钟前
3
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
47分钟前
3
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
53分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部