对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