说明:以下都是本人个人见解,如有错误请自行进行纠正

四、优缺点

优点:

1.首先就是对GameObject属性的控制,可以像Unity的Animation动画一样通过关键帧动画控制GameObject的位置、旋转、数值变化、开关等,简直就是Animation的替代品;

2.然后就是源生支持Mecanim动画系统,不论是简单的动画播放或者多层动画控制都是得心应手,信手拈来;

3.其次当然是强大的事件系统,几乎可以控制所有的东西,无所不能;

4.最后当然是USequencer可以直接在不Play的情况下预览剧情、播放动画和特效等,这极大的方便了美术的制作和使用,而对于那些与场景交互密切的剧情,就更加需要这个功能,想象一下不用每修改一次参数就要Play一下去看修改的对不对,靠的紧不紧等

缺点:

1.首先依然还是属性控制,在保存为Prefab的时候,会生成很多的小文件,几乎是一个关键帧对应一个小文件,对项目目录结构不友好,保存完后重新打开需要一个个的解析这些小文件,还常常失败,导致要重新制作等;

2.然后就是源生的播放Mecanim那套东西,也常常出各种问题,不是Animator找不到,就是Animation找不到,一些动画控制器状态的增删改查也会引起做好的剧情打不开等等;

3.其次是事件系统,这个到没出什么BUG,只是原版的瞬时事件和持续事件在原版默认情况下显示不够准确,有时会造成美术的误读等(后面有解决方法,但是只有源码版的可以修改),事件系统除了这个就没有其他问题

4.最后还是编辑模式下的预览,编辑模式下,毕竟不具备我们游戏运行时所需要的那些环境(比如当前玩家Animator),也因此我们常常要写两份代码,一份在编辑时执行,一份在运行时执行,这点非常的考验人。有的是编辑下能看到效果,有的是运行时才能看到效果。

5.工程容易崩溃,东西可能要从头开始做

五、未解决问题

1. 如何倒着播放

2.02 AdditivelyLoading Cutscene场景中的  怎么加载出来的

3. BasicExample01-PropertiesAndEvents场景中摄像机的路径是怎么设置的

4.动态加载另一个场景时,有错误:You have added an AutoPlaySequence, however you haven't assigned it asequence

六、能使用的类有USEventBase USEventBaseEditor  USSequencer
七、其他功能实现
事件的扩展

using UnityEngine;

using System.Collections;

namespace WellFired

{

///<summary>

/// A custom event that allows you to alter thegame's TimeScale over a given time period with the specified curve.

///</summary>

[USequencerFriendlyName("Time Scale")]//用来做事件的GameObject名称和剧情面板中的名字

[USequencerEvent("Time/Time Scale")]//该事件的菜单Item

[USequencerEventHideDuration()]//表示该事件是否为瞬时事件(有这个命令会被标识为瞬时事件,没有则为持续事件)

public classUSTimeScaleEvent : USEventBase

{

///<summary>

/// This curve defines the TimeScale over agiven time period.

///</summary>

public AnimationCurve scaleCurve = new AnimationCurve(new Keyframe(0.0f, 1.0f), new Keyframe(0.1f, 0.2f), new Keyframe(2.0f, 1.0f));

private float currentCurveSampleTime = 0.0f;

private float prevTimeScale = 1.0f;

//事件开始时执行,类似于Enable,只执行一次

public override void FireEvent()

{

prevTimeScale = Time.timeScale;

}

//事件持续执行时调用,类似于Update,多次执行

public override void ProcessEvent(float deltaTime)

{

currentCurveSampleTime = deltaTime;

Time.timeScale = Mathf.Max(0f,scaleCurve.Evaluate(currentCurveSampleTime));

}

//事件结束时执行,类似于Disable,只执行一次(结束时自动调用)

public override void EndEvent()

{

float sampleTime = scaleCurve.keys[scaleCurve.length - 1].time;

Time.timeScale = Mathf.Max(0f, scaleCurve.Evaluate(sampleTime));

}

//事件被停止时执行,整个剧情Sequence被Stop时执行

public override void StopEvent()

{

UndoEvent();

}

//事件被暂停时执行一次

public override void PauseEvent()

{

base.PauseEvent();

}

//事件继续播放时执行(有问题)

public override void ResumeEvent()

{

base.ResumeEvent();

}

//事件被撤销时执行(有问题)

public override void UndoEvent()

{

currentCurveSampleTime = 0.0f;

Time.timeScale = prevTimeScale;

}

}

}

对于每个事件,FireEvent和ProcessEvent是必须要实现的,其他方法可选。

EndEvent、StopEvent和UndoEvent都最好实现以下,用来对FireEvent和ProcessEvent进行逆操作,因为剧情很大一部分事件都是在不运行游戏下执行,如果不执行逆操作,运行几遍后,整个场景就真的惨不忍睹,编辑不下去了。

八、制作一个小demo

新建一个场景,将Auto Play uSequence拖入场景,Ctrl+u 新建一个Sequence,将摄像机拖入

右击鼠标添加关键帧,进行编辑,完成摄像机的简单移动

九、热键 

Ctrl+U 打开

Ctrl+I 关闭

Alt+, 上一帧

Alt+. 下一帧

, 减0.01秒

. 加0.01秒

p 开始或暂停

S 停止

十、相关文章参考

文章一ttp://www.seven-fire.cn/archives/186

文章二http://www.seven-fire.cn/archives/199

文章三 http://blog.uwa4d.com/archives/Usequencer3.html

剧情插件Cutscene Creator uSequencer 1.3.7.1使用说明二相关推荐

  1. 最好用的剧情插件:USequencer初识

    最好用的剧情插件:USequencer初识 一.引言 现在几乎所有游戏开场过程中,通常都会有一段唯美的CG动画作为游戏的背景故事介绍.而如果能在游戏过程中也能使用CG动画做过场动画.游戏交通.衔接情节 ...

  2. 按键精灵文字识别插件_按键精灵——如何实现办公自由(二)

    这是奔跑的键盘侠的第172篇文章 作者|我是奔跑的键盘侠 来源|奔跑的键盘侠(ID:runningkeyboardhero) 转载请联系授权(微信ID:ctwott) 上一期的这个大饼,那今天就来讲一 ...

  3. cocos creator制作游戏实战-Flak Cannon(二)

    上一文主要介绍了游戏的设计思想和一些cocos creator的基本操作,本文将继续讲述下游戏的具体制作. 本文所涉及的知识点包括,预制体(prefab)的制作,按角度移动物体等 一.制作飞机,战舰, ...

  4. 网站日记分析插件【土拨鼠网站日记管理(分析推送二合一)】宝塔插件,日记分析和网站收录推送

    应用名称:土拨鼠网站日记分析管理 版本:3.0 目前只支持linux版宝塔 作者:土拨鼠 功能介绍:SEO辅助工具,站点蜘蛛,访问记录,模拟蜘蛛,监控统计.只要添加的蜘蛛池IP丰富.便可以精准过滤出可 ...

  5. 【Rest API】Advanced REST Client浏览器插件rest api请求工具安装教程及使用说明

    前言 开发工作中,经常会对rest api接口进行测试,大家肯定会想到postman,但是今天给大家推荐一个小容量更便捷的浏览器插件工具Advanced REST Client 安装说明 1.点击下载 ...

  6. Cocos Creator 资源加载流程剖析【二】——Download部分

    Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...

  7. JQuery插件,轻量级表单模型验证(续 二)

    好不容易,有心思,那就把没做完的JQuery轻量级表单验证做完吧 之前做到了空参数验证的,现在增加带参数的验证. 附上html <form id="ValidataForm" ...

  8. qt creator 信号与槽 代码实现 (二)

    一.通过 go to  slot 选项实现 1.单击 "今天",选择  go to slots 2.在 mianwindow.h 文件下产生了 private slots: voi ...

  9. 百度URL自动推送收录插件【土拨鼠网站日记管理(分析推送二合一)】推送功能配置教程

    推送功能配置教程(推送功能和网站日记分析功能可以单独分开始用,需要哪个功能就单独设置这个功能即可): 第一次使用推送功能需要在[工具设置]先生成缓存数据库和配置推送计划 初次设置: 自动爬取整站URL ...

  10. html 中avi视频插件,LPL夏季赛:JDG让一追二击败V5!Kanavi猛如战神,连续2局乱杀...

    LPL夏季赛JDG和V5的比赛,JDG这场比赛更换首发AD,loken被换下场,新人AD选手LPC登场,双方大战3局之后,JDG成功让一追二击败了V5,拿下了比赛的胜利.其中kanavi后面两局都发挥 ...

最新文章

  1. CEO亲自写代码登上热榜,从零开始打造“裸金属”树莓派
  2. java8 无符号_Java8包装类 新增 无符号运算方法
  3. objective-c 面试题
  4. react native 网络请求 axios
  5. 百度App Objective-C/Swift 组件化混编之路(二)- 工程化
  6. AM335x(TQ335x)学习笔记——GPIO关键驱动移植
  7. LeetCode 6038. 向表达式添加括号后的最小结果
  8. 今晚直播丨国产数据库入门:openGauss数据库的基本管理和SQL语句入门
  9. 远看像乱序执行,近看是内存屏障的BUG是如何解决的?
  10. 利用varnish构建httpd缓存服务器
  11. rpm mysql配置文件_redhat linux rpm包安装配置mysql数据库
  12. 网站性能并发测试工具
  13. 随机森林(Random Forest)算法原理总结
  14. C语言程序设计三大基本结构之顺序结构
  15. 51单片机智能家居环境检测 烟雾温度GSM短信提示报警器(原理图+程序+仿真+PCB)
  16. 开源库UniTask笔记
  17. 小程序收费标准是什么,多少钱一年?
  18. JAVA核心知识点--JDK1.8中的日期处理
  19. 小鸟云安全组在哪里?怎么设置?
  20. UiPath.CoreIpc.RemoteException Could not obtain access token.「解决方案」

热门文章

  1. 工业界论文被CVPR收录有捷径?| CVPR 2017
  2. ps如何把自己的图与样机结合_样机在ps里面怎么用|ps怎么把图片放在书本样机图中...
  3. python贴吧-贴吧python登录
  4. [C语言]——打印素数(质数)
  5. 输出10000以内的质数C语言
  6. 用计算机名共享打印机不能打印,共享打印机无法打印怎么办解决教程
  7. FindBugs错误描述
  8. 整车EMC正向开发及仿真
  9. 堰流实验报告思考题_创新实验之一:桥墩冲刷实验
  10. 双网卡实现同时上内外网方法