虚幻4蓝图快速入门(一)

蓝图快速入门

序言

本文依据官方教程总结而来,只是带你对蓝图有一个快速的认识,如果想对蓝图有一个比较深入的了解,那么可以看官方的视频或者是做一些小项目练手,如果你有编程经验的话,上手还是很容易的。

蓝图快速入门

什么是蓝图

虚幻引擎中的蓝图可视化系统是一个完整的游戏脚本系统,其理念是使用基于节点的界面从虚幻编辑器中创建游戏可玩性元素,该系统非常灵活且非常强大,因为它为设计人员提供了一般仅供程序员使用的所有概念及工具。它是一种特殊类型的资源,为关卡设计师和游戏开发人员提供了一种在编辑器中快速创建及迭代游戏可玩性的工具。

通过使用蓝图,设计人员几乎可以创作任何游戏元素的原型,以及实现或修改这些元素。

  • Games(游戏)创建游戏规则,调整游戏条件等。
  • Players (玩家)使用不同的网格物体、材质或角色自定义来创建变种
  • Cameras (相机)创建新相机视角的原型或者在游戏运行过程中动态地改变相机。
  • Input(输入)修改玩家操作,或允许玩家向道具传入输入
  • Items (道具)武器、法术、掉落物、触发器等。
  • Environments (环境)创建随机的装置或者程序化地生成道具。

为了对蓝图有一个基本的印象,你可以查看:

  • 官方快速入门指南
  • 虚幻引擎快速入门视频教程

对于程序员来说,我们可以把它理解为一种可视化的高级语言(C#等),它有基本的变量、函数、类型转换,支持继承、多态等。

蓝图的工作原理

从蓝图的基本形式上讲,蓝图是针对您游戏添加的可视化脚本。通过使用连线把节点、事件、函数及变量连接到一起,这样就可以创建复杂的游戏性元素。蓝图通过各种用途的节点构成图来进行工作,这些节点包括针对蓝图每个实例的对象构建、独立的函数、一般的游戏性事件,从而实现各种行为及其它功能。

对比

UnrealScript vs Blueprints vs C++

UnrealScript (UE3):

  • 一种面向对象的脚本语言
  • 跟C,C++,Java的语法相似,但是也有些不同
  • 编译成虚拟机字节码
  • 添加了一些有趣的功能,比如状态(States),定时器(Timer)委托等(Delegates)

蓝图 (UE4):

  • 一种面向美术人员和设计师友好的可视化脚本系统
  • 跟UnrealScript使用的相同的虚拟机
  • 几乎跟UnrealScript一样强,在某些方面甚至更强

C++:

  • 一直是UE游戏编程中的一部分
  • 跟虚拟机相互紧密地结合在一起
  • 在UE4里面得到巨大的改进用来让编程人员替代UnrealScript

蓝图跟c++对比

  • 蓝图适合快速迭代
  • 蓝图比原生C++消耗更多的CPU性能
    • 运行在虚拟机上
    • 大约比原生C++代码慢8~10倍
    • 对于大多数简单的事件驱动的任务,你可能并不会发现性能有什么大的消耗
    • 许多发行的AAA游戏都在使用蓝图(包括Epic自己)
    • 每帧需要更新的(tick)应用使用原生C++(物理模拟)
  • 但是,蓝图仍然很合适做原型开发
    • 可以让设计师在蓝图快速得创建他们所需的原型,然后让程序员把它转换成代码
    • 这是Epic公司如何使用蓝图的

总结

  • 蓝图可以让设计师快速简单得实现想法
  • 图状结构可以让程序员快速简单得用C++代码实现并优化
  • 代码可以在编辑器中添加到任意工程中
  • 快速协作、畅通沟通,不会出现模糊不清的玩法设计。

个人理解,蓝图系统非常强大,可用于快速原型设计、简单事件驱动玩法的开发,但是如果玩法复杂需要耗费非常多的CPU性能,那么最好把设计师使用蓝图设计的玩法翻译成原生的C++代码,如果本身一些像物理模拟等需要每帧更新又特别耗时的那么需要使用C++来进行开发。

蓝图类型

关卡蓝图(Level Blueprint)

关卡蓝图是一种特殊类型的蓝图,是作用于整个关卡的全局事件图表。关卡事件或者关卡中的Actor的特定实例,用于激活以函数调用或者流程控制操作的形式呈现的动作序列。熟悉虚幻引擎3的人应该非常熟悉这个概念,因为这和虚幻引擎3中的Kismet的工作原理非常相似。

关卡蓝图提供了针对关卡动态载入、Matinee以及给放置到关卡中的Actor绑定事件的机制。

类蓝图 (Blueprint Class)

类蓝图是一种允许内容创建者轻松地基于现有游戏性类添加功能的资源。它是在编辑器中可视化地创建的,不需要书写代码,会被作为类保存在包中。实际上,这种类蓝图定义了一种新类别或类型的Actor,这些Actor可以作为实例放置到地图中,就和其它类型的Actor的行为一样。

父类

你可以创建多种不同类型的蓝图,当然在你做这些之前,你需要指定该蓝图的**Parent Class(父类)** 选择继承父类,允许你在自己的蓝图里面调用父类创建的属性。

下面是你创建蓝图是最常见的父类:

  • Actor    一个可以在世界中摆放,或者生成的Actor。
  • Pawn    Pawn是一个可以从控制器获得输入信息处理的Actor.
  • Character    角色是一个包含了行走,跑步,跳跃以及更多动作的Pawn.
  • PlayerController     角色控制器
  • Game Mode    一个Game Mode 定义了游戏是如何被执行的,游戏规则,如何的分以及其他方面的内容。

仅包含数据的蓝图(Data-Only Blueprint)

仅包含数据的蓝图是指仅包含代码(以节点图表的形式)、变量及从父类继承的组件的类的蓝图。仅包含数据的蓝图允许你调整及修改继承的属性,但是不能添加新元素。从本质上讲,这些蓝图是原型的替代物,设计人员可以使用它们来调整属性或者设置具有变种的项目。可以通过添加代码、变量或者组件来将它转换成完整的类蓝图。

蓝图接口(Blueprint Interface)

蓝图接口是一个函数或多个函数的集合,它相当于C++中的一个纯虚基类,仅有函数名称,没有实现,该接口可以添加到其它蓝图中。使用具有该接口的蓝图,都一定会具备这些函数。在每个添加了接口的蓝图中,都可以提供接口的这些函数功能。从本质上讲这各一般编程中的接口概念一样,允许通过一个公共接口来共享及访问多种不同类型的对象。简单地讲,蓝图接口允许不同的类蓝图间彼此共享及发送数据。

蓝图接口的创建和其他类似,可以通过编辑器中的内容创建器进行创建,但它们有一些局限性,因为它们不能:

  • 添加新变量
  • 编辑图表
  • 添加组件

蓝图宏库(Blueprint Macro Library)

蓝图宏库是一个存放了一组宏的容器,或者是可以像节点那样放置到其他蓝图中的自包含图表。这些蓝图宏库非常节约时间,因为它们存放了常用的节点序列、及针对执行和数据变换的输入和输出。

宏会在所有引用它们的图表间共享,但是如果它们在编译过程中是合并的节点,那么它们会自动地展开为图表。这意味着蓝图宏库不需要进行编译,但是对宏所做的修改,仅当重新编译了包含引用该图表的蓝图时,这些修改才会反应在图表中。

参考:

  1. https://docs.unrealengine.com/latest/CHN/Engine/Blueprints/QuickStart/index.html
  2. http://blog.csdn.net/neil3d/article/details/49070135
  3. http://www.slideshare.net/GerkeMaxPreussner/east-coast-devcon-2014-game-framework
  4. http://www.slideshare.net/GerkeMaxPreussner/gdce-2015-blueprint-components-to-c
时间: 2024-10-07 03:14:53

虚幻4蓝图快速入门(一)的相关文章

虚幻4蓝图快速入门(四)

蓝图跟C++交互 概述 蓝图可以继承C++类,从而使得程序员可以在代码中创建新的游戏性类,而关卡设计人员可以使用蓝图来继承该类并对其进行修改. 有很多种修饰符可以改变C++类和蓝图系统间交互方式,其中某些修饰符会在本示例中突出介绍. 可以通过查看以下内容来快速了解: 虚幻引擎快速入门视频教程第五章,见引用[1] 官方文档 类设置 在类设置的第一部分中,使用C++类向导创建一个名称为LightSwitchBoth 的类. LightSwitchBoth类中的大部分代码设置都和 仅使用C++的Lig

虚幻4蓝图快速入门(三)

数学表达式节点 概述 要想创建一个数学表达式节点,请右击图表并从关联菜单中选择 Add Math Expression(添加数学表达式)... . 数学表达式节点就像一个合并的图表.它是一个独立的节点,您可以双击它来打开构成其功能的子图表. 最初,该名称/表达式是空的.任何时候,当您重命名该节点时,都将会解析新表达式并生成新的子图表. 变量 变量命名非常灵活,但是记住以下几点非常重要: 变量名称本身可以包含数字,但是不能以数字开头. 变量名称不能和隐藏的蓝图变量名称一样. 确保您正在使用正确的变

虚幻4蓝图快速入门(二)

蓝图用户指南 由于蓝图就是个可视化的脚本系统,那么一个程序语言中的基本概念也就都存在.下面我们简单来介绍下蓝图中的一些基本概念. 变量 概述 Variables(变量) 是存放一个值或引用世界中的一个Object或Actor的属性.这些用户界面 内部访问,或者通过设置使得可以在外部进行访问, 以便应用放置在关卡中的蓝图实例的设计人员可以修改它们的 值. 变量显示为圆角方框,方框内包含了变量的名称: 变量类型 您可以创建各种类型的变量,包括数据类型的变量(比如布尔型.整型及浮点型)及用于存放类似于

python第一弹快速入门

快速入门:1.python的print语句,与子付款格式操作符(%)结合使用,可实现字符串替换功能. print "%s is number %d" % ("python",1) %s表示一个字符串来替换:%d表示由一个整型来替换:%f表示由一个浮点型来替换: 2.python语句也支持将输出到重定向到文件.符号>>用来定向输出.>>> import sys>>> log = open('/tmp/myprint.lo

懂一点前端—Vue快速入门

01. 什么是 Vue Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架,是当下很火的一个 JavaScript MVVM 库,是以 数据驱动和组件化 的思想构建的. MVVM 模式简述 下图不仅概括了 MVVM 模式 (Model-View-ViewModel),还描述了在 Vue.js 中 ViewModel 是如何和 View 以及 Model 进行交互的. ViewModel 是 Vue.js 的核心,它是一个 Vue 实例.Vue 实例是作用于某一个

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

javaweb-html快速入门

本文主要是进行HTML简单介绍(详细的属性查帮助文档就行了,这里主要为快速入门,赶时间,在最短的时间中看明白一个html文件的代码(如果能称之为代码的话)详细的样式表,布局啥的有时间再研究吧) HTML 1.html的简介 1.1,html的全称:HyperText Mark-up Language ,超文本标记型语言,是网页的语言. 超文本:比文本更加强大(后面还会讲到XML,可扩展标记性语言) 标记:就是标签,html所有操作都是通过标签直接或间接的操作(把需要操作的数据通过标签封装起来)

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话 安装Python 从http://www.python.org/downloads/ 下载安装程序 安装完后,再添加到环境变量. 安装Oracle JDK 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/ 选择要下载的Java版本(推荐Java 7). 选择一个JDK下载并接受许可协议. 一旦下载,运行安装程序. 安装Ant Ant:下载http

bash编程快速入门

首先,我们简单的介绍一下bash,bash是GNU计划编写的Unixshell,它是许多Linux平台上的内定shell,它提供了用户与系统的很好的交互,对于系统运维人员,bash的地位是举足轻重的,bash编程能很快处理日常的任务 bash入门,一个最简单的bash例子 #vim hello.sh #!/bin/bash #This is the first example of the bash #echo "Hello world" 下面,我们就这个简单的bash 脚本来介绍一下