UE4新手之编程指南
虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程。 新的游戏类、Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 XCode之一编译后可以在虚幻编辑器中反映出全部变更内容。 蓝图可视化脚本系统是一个强劲的工具,可以让类通过连接函数区块和属性引用来在编辑器中进行创建。
C++类可以作为蓝图类的基类使用,并且这样的话,程序员就可以设置基础的游戏类,随后,它们由关卡设计师来进行子类和迭代处理。
虚幻引擎API引用
虚幻引擎游戏的游戏性
资源处理参考指南
动画节点技术指南
动画节点用于在Vim 蓝图 中执行 操作,比如混合姿势或直接操作骨骼。虽然仅提供了几个动画节点, 但是您可以创建自定义节点来满足任何游戏的需要。
动画节点剖析
动画节点由两部分组成:
一个运行时结构体,它执行真正的操作来生成输出姿势。
一个编辑器中使用的容器类,用于在图表中处理节点的显示效果和功能, 比如,节点标题和关联菜单。
要想添加一个新动画节点,就必须创建这两个部分内容。
节点层次结构
尽管可以创建节点的层次结构,但任何在编辑器中使用的非抽象类都应该正确地包含 一个运行时节点(当进行继承时不要添加任何额外的节点,除非父类是抽象类且没有包含任何节点)。 请参照 UAnimGraphNode_BlendListBase
获得示例。
运行时节点
运行时结构体继承于 FAnimNode_Base
,负责初始化、更新及操作一个或多个 输入姿势来生成期望的输出姿势。它还声明了节点执行期望操作所需的 任何输入姿势连接和属性。
姿势输入
在运行时节点中,通过创建 FPoseLink
或 FComponentSpacePoseLink
类型的属性来暴露姿势输入 。当在本地空间中应用姿势时使用 FPoseLink
,比如 混合动画。当在组件空间中应用姿势时使用 FComponentSpacePoseLink
。 比如,应用骨架控制器。
一个节点可以具有一个单独的姿势输入:
本地空间
UPROPERTY(Category=Links)
FPoseLink BasePose;
组件空间
UPROPERTY(Category=Links)
FComponentSpacePoseLink ComponentPose;
组件空间姿势引脚是蓝色的。
或者,节点也可以具有多个输入,用于混合多个动画:
UPROPERTY(Category=Links)
FPoseLink Base;
UPROPERTY(Category=Links)
FPoseLink Additive;
属性和数据输入
动画节点可以有多个属性(比如一个alpha 或 变换数据),用于执行节点的操作 。这些属性的声明方式和其他属性一样,使用 UPROPERTY()
宏进行声明。
UPROPERTY(Category=Settings, meta(PinShownByDefault))
mutable float Alpha;
通过使用特殊的元数据关键字,可以将动画节点的属性暴露为数据输入,从而可以向该 节点传入值。这允许节点的属性使用在节点之外计算的值。 以下是可用的元数据关键字:
编辑器节点
编辑器类继承于 UAnimGraphNode_Base
,负责类似于显示节点标题或 添加关联菜单动作这样的事情。
在编辑器中使用的类应该包含一个您的运行时节点的实例,且该实例暴露为可编辑状态。
UPROPERTY(Category=Settings)
FAnimNode_ApplyAdditive Node;
标题
在角色编辑器内的 动画蓝图 的图表中显示的动画节点的背景颜色和标题文本, 是通过重载 GetNodeTitle()
和 GetNodeTitleColor()
函数定义的。
比如, UAnimGraphNode_ApplyAdditive
节点使用灰色背景,且显示 "Apply Additive":
FLinearColor UAnimGraphNode_ApplyAdditive::GetNodeTitleColor() const { return FLinearColor(0.75f, 0.75f, 0.75f); } FString UAnimGraphNode_ApplyAdditive::GetNodeTitle(ENodeTitleType::Type TitleType) const { return TEXT("Apply Additive"); }
工具提示信息
在角色编辑器中,当鼠标悬停到节点上时显示的工具提示信息,该信息是通过重载 GetTooltip()
函数定义的。
FString UAnimGraphNode_ApplyAdditive::GetTooltip() const { return TEXT("Apply additive animation to normal pose"); }
关联菜单
每个动画节点可以添加节点相关的选项到关联菜单中,当您右击角色编辑器中的图表中的节点时会显示该 关联菜单。这些选项是通过 GetContextMenuActions()
函数添加的,该函数 是所有蓝图节点的成员函数。
比如, UAnimGraphNode_LayeredBoneBlend
节点添加菜单项,用于添加新的输入或删除现有输入:
void UAnimGraphNode_LayeredBoneBlend::GetContextMenuActions(const FGraphNodeContextMenuBuilder& Context) const { if (!Context.bIsDebugging) { if (Context.Pin != NULL) { // we only do this for normal BlendList/BlendList by enum, BlendList by Bool doesn't support add/remove pins if (Context.Pin->Direction == EGPD_Input) { //@TODO: Only offer this option on arrayed pins Context.MenuBuilder->BeginSection("AnimNodesLayeredBoneBlend", NSLOCTEXT("A3Nodes", "LayeredBoneBlend", "Layered Bone Blend").ToString()); { Context.MenuBuilder->AddMenuEntry(FGraphEditorCommands::Get().RemoveBlendListPin); } Context.MenuBuilder->EndSection(); } } else { Context.MenuBuilder->BeginSection("AnimNodesLayeredBoneBlend", NSLOCTEXT("A3Nodes", "LayeredBoneBlend", "Layered Bone Blend").ToString()); { Context.MenuBuilder->AddMenuEntry(FGraphEditorCommands::Get().AddBlendListPin); } Context.MenuBuilder->EndSection(); } } }
UE4新手之编程指南的更多相关文章
- ue4 1官网编程指南总结
https://docs.unrealengine.com/latest/CHN/index.html 中编程指南 快速入门 actor生命周期 FloatingActor.h #pragma onc ...
- 新手也能看懂的 SpringBoot 异步编程指南
本文已经收录自 springboot-guide : https://github.com/Snailclimb/springboot-guide (Spring Boot 核心知识点整理. 基于 S ...
- 高质量C++/C编程指南(林锐)
推荐-高质量C++/C编程指南(林锐) 版本/状态 作者 参与者 起止日期 备注 V 0.9 草稿文件 林锐 2001-7-1至 2001-7-18 林锐起草 V 1.0 正式文件 林锐 20 ...
- 学习笔记之高质量C++/C编程指南
高质量C++/C编程指南 http://man.lupaworld.com/content/develop/c&c++/c/c.htm 高质量C++/C编程指南(附录 C :C++/C 试题的 ...
- 高质量C++/C编程指南
http://man.chinaunix.net/develop/c&c++/c/c.htm#_Toc520634042 高质量C++/C编程指南 文件状态 [ ] 草稿文件 [√] 正式文 ...
- 闭包初体验 -《JavaScript面向对象编程指南》
下面是我对闭包的理解:(把他们整理出来,整理的过程也是在梳理) 参考<JavaScript面向对象编程指南> 1.首先,在理解闭包之前: 我们首先应该清楚下作用域和作用域链 作用域:每个函 ...
- Archive for the ‘Erlang’ Category 《Erlang编程指南》读后感
http://timyang.net/category/erlang/ 在云时代,我们需要有更好的能利用多核功能及分布式能力的编程语言,Erlang在这方面具有天生的优势,因此我们始终对它保持强烈关注 ...
- OpenGL编程指南(第七版)
OpenGL编程指南(第七版) 转自:http://blog.csdn.net/w540982016044/article/details/21287645 在接触OpenGL中,配置显得相当麻烦,特 ...
- 编译opengl编程指南第八版示例代码通过
最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...
随机推荐
- 《Web 前端面试指南》1、JavaScript 闭包深入浅出
闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ...
- JSON.parse()和JSON.stringify()
1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf","age":"23&q ...
- app引导页(背景图片切换加各个页面动画效果)
前言:不知不觉中又加班到了10点半,整个启动页面做了一天多的时间,一共有三个页面,每个页面都有动画效果,动画效果调试起来麻烦,既要跟ios统一,又要匹配各种不同的手机,然后产品经理还有可能在中途改需求 ...
- Python碎碎念
1. 如何添加路径 主要有以下两种方式: 1> 临时的 import sys sys.path.append('C:\Users\Victor\Desktop') 2> 永久的 在Linu ...
- redis成长之路——(二)
redis操作封装 针对这些常用结构,StackExchange.Redis已经做了一些封装,不过在实际应用场景中还必须添加一些功能,例如重试等 所以对一些常功能做了一些自行封装SERedisOper ...
- 如何为你的微信小程序体积瘦身?
众所周知,微信小程序在发布的时候,对提交的代码有1M大小的限制!所以,如果你正在写一个功能稍微复杂一点的小程序,就必须得时刻小心注意你的代码是不是快触及这个底线了. 在设计一个小程序之初,我们就需要重 ...
- Git(1)
安装Git 完毕 (在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦) 1.D盘新建 GitTest 文件夹 2.打开GitTest , 在空白的地方右键, 3.单击 Git Bash He ...
- zookeeper集群的搭建以及hadoop ha的相关配置
1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): da.huying.usermanag ...