当前位置: 首页 > news >正文

对ue4 sequence的学习和理解

对ue4 sequence的学习和理解

https://zhuanlan.zhihu.com/p/351252543

项目中有大量的过场和事件,对sequence的需求量是比较大的,ue4的sequence又是一个可交互的东西,如果能进行二次开发必然是展现游戏的利器,所以需要花点时间对它进行深入的了解。

首先,要在c++中使用sequence开发,必须要先在你项目工程的.build.cs里加入四个常用的模块,分别是MoviePlayer, LevelSequence, MovieScene.这样,绝大部分sequence的模块都包含进去了,类似如下。

然后你在需要开发的.h上加入这几个.h文件,基本就差不多了。

如果要了解sequence,光从程序的角度理解肯定是不够,你必须要懂得基本编辑器里面的一些功能点,不然你看那些函数和类估计一头雾水。

在ue4的editor下,有两个sequence的入口,一个是level sequence,一个是master sequence,其实master sequence就类似level sequence的一个超集,它帮你建立文件夹,分割成一个主sequence和一堆碎的子sequence,每个子sequence里面都是一个shots,这个也是level sequence分段的基本单位。不过对于程序开发,master sequence这个就跟我们无关了,我们只需要了解level sequence的基本架构即可.

当然,除了这两个sequence,还有一个实验性功能,叫actor sequence component,这个是可以加载在actor下面的一个组件,可以为这个actor做一些简单的动画,比如位移什么的,这个功能我们在一些棋牌里用上,做一些牌的位移什么的,效果还是不错的,太复杂的功能做不了,而且有不少bug,比如你如果你在一个actor里面加了几个actorsequence comonent,它是不会单独弹出sequence编辑器的,是合并在actor面板里的,反复切换会很麻烦而且容易出错,有兴趣的可以去学习下。

在level sequence里,大致的结构如下

这里面有个重点,就是在bind里,你如果需要控制摄像机在sequence结尾保持状态,你需要设置为keep state。

每个shot下的多个sequence都可以当成一个section,而一个master sequence又是由多个shot的sequence组成的。

另外在每个shot里,一般又会定义多种trace,用来控制事件,材质,声音,淡入淡出等等.

 

在c++开发中,我们一般访问sequence需要定义两个最基本的类.

这分别代表一个一个actor的类和一个实际播放控制的类.我们在代码中这么控制获取他们.

假定我先定义个sequence的引用。

然后使用它来构造.

当构建成功,我们则可以使用下面一些常用函数来控制和访问它们.

篇幅有限,我就简单做了个结构的分析思维导图。

只是个学习笔记,里面还有很多疏忽和遗漏,也会有些错误,欢迎指正!

发布于 02-18

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • [gdc19]《战神4》中的全局光照技术
  • 5 种避免使用 C# lock 关键字的方法
  • [玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解
  • Lua5.4新特性
  • 探究光线追踪技术及UE4的实现 -- good
  • Unity游戏项目性能优化总结
  • 【UE4源代码观察】观察DDC(DerivedDataCache)
  • Chrome 抓包
  • float.Parse 在不同区域小数表示是不一样的
  • C# GC 垃圾回收
  • Android Studio NDk调试(基于gradle-experimental插件与LLDB)
  • android studio调试c/c++代码
  • 在开发过程中使用 git rebase 还是 git merge,优缺点分别是什么?
  • Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
  • Windbg使用说明书
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Apache Zeppelin在Apache Trafodion上的可视化
  • C++入门教程(10):for 语句
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • IDEA常用插件整理
  • Java多态
  • Java-详解HashMap
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • sessionStorage和localStorage
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue-cli3搭建项目
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 从零开始学习部署
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 交换综合实验一
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # Apache SeaTunnel 究竟是什么?
  • #14vue3生成表单并跳转到外部地址的方式
  • $.ajax中的eval及dataType
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (¥1011)-(一千零一拾一元整)输出
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (分布式缓存)Redis分片集群
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)汇编语言——简单程序
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .bat批处理出现中文乱码的情况
  • .net 反编译_.net反编译的相关问题
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化