完全基于Ultimate Replay 2.0的UI回放系统

  • 前言
  • 针对固定UI实时更新的情况
  • 针对代码生成的UI实时更新的情况
  • Demo下载

前言

前面两节已经介绍了本人在项目中使用的结合JSON和Ultimate Replay 2.0的UI回放系统,那是在项目结构特殊,代码不好更改的情况下,本人所做的些许调整。但在这几天的开发过程中,我发现通常情况下只使用Ultimate Replay 2.0即可实现大部分情况下的UI回放。

针对固定UI实时更新的情况

这在基于JSON的UI回放系统(倍速)(二)一节中已经进行了介绍。

针对代码生成的UI实时更新的情况

此种情况例如ScrollRect实时显示滚动的消息,需要用到代码实时生成UI元素,这里就需要用到Ultimate Replay 2.0中的ReplayBehaviour,及需要在回放过程中任然保持运行的脚本,需要继承ReplayBehaviour基类,需要回放的方法应使用[ReplayMethod]特性修饰,并在录制过程中使用RecordMethodCall方法去调用需要回放的方法,才能记录此方法的调用时间以备回放,如下:

using System.Collections;
using System.Collections.Generic;
using UltimateReplay;
using UnityEngine;
using UnityEngine.UI;public class ReplayUIByUR2 : ReplayBehaviour
{[ReplayVar]public string textA;[ReplayVar] public int textB;public Text textPrefab;public RectTransform contentRoot;public MScrollRect scrollRect;private float interval = 1.5f;private float time = 0;private string testText;private void Update(){if (IsRecording){time += Time.deltaTime;if (time >= interval){textA = "测试:" + Random.Range(0, 10).ToString();textB = Random.Range(0, 10);testText = Time.timeSinceLevelLoad.ToString();RecordMethodCall(AddText,testText);time = 0;}}}[ReplayMethod]public void AddText(string str){UIHelper.AddScrollText(textPrefab, contentRoot, str, scrollRect);}
}

但是此种方法回放的代码生成的UI不能自动销毁,需要手动在每一次录制前和回放前销毁已产生的动态UI元素,如下所示,在Record和Replay前都调用此方法:

    private void ClearUIData(){for (int i = 0; i < uiContentRoot.childCount;i++){GameObject obj = uiContentRoot.GetChild(i).gameObject;Destroy(obj);}}

效果如下:
注意:

  • 有时候使用ReplayMethod回放方法操作,会重复回放某一操作,就比如滚动UI只更新了85.252这个数据,但是回放的时候则回放了85.252这个数四五次,这种情况尚未解决,但好在是少数情况下才会出现这种情况。
  • 用来回放的.replay文件不能放在StreamingAssets文件夹下,要不然录制的时候会报出警告说我们重复写入空数据到某一文件。

Demo下载

Demo

【Unity学习】完全基于Ultimate Replay 2.0的UI回放系统相关推荐

  1. 深度学习实战—基于TensorFlow 2.0的人工智能开发应用

    作者:辛大奇 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-10-01 深度学习实战-基于TensorFlow 2.0的人工智能开发应用

  2. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  3. unity学习路线参考——转载自csdn

    版权声明: https://blog.csdn.net/qq_22521529/article/details/83108837 Unity3D学习路线与学习经验分享 作者:15游02 丁祺 你好,这 ...

  4. Unity学习资源指南[精心整理]

    前言 进入一个领域,最直接有效的方法就是寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的激 ...

  5. Unity学习日志1

    unity入门 1.学习路线 初级:1.配置 2.unity官方入门教程 3.2d入门 4.3d入门 b站学习和官网learn.unity 进阶:核心知识点 中级: 高级: 2.基础阶段 unity安 ...

  6. DY_M的Unity学习日记 1 ——AnimationClip的读取与代码生成

    DY_M的Unity学习日记 1 --AnimationClip的读取与代码生成 https://www.jianshu.com/p/80b2bc98ac5d 作为一个"不务正业" ...

  7. Unity学习资源汇总 2021/4/16 更新

    打算学一学Unity,然后四处查找资料,发现 资源真的是鱼龙混杂,国内很多教程都是半教程半卖课性质的,看得人头疼. 想找本好书,但是发现大部分的书籍都是基于Unity5.x的,而目前已经有Unity2 ...

  8. [Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格

    [Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格 本文并非原创,只是本人的学习记录,原文是由放牛的星星老师翻译Catlike系列教程 链接: https://mp.weixin.qq ...

  9. EMAIL发送系统(C#+基于SMTP认证) 2.0

    这个是对于 EMAIL发送系统(C#+基于SMTP认证) 1.0 的改版这个第一版是2002年11月写的,过了一年半了,才有人提意见,就修正了一下,因为后来做的项目一直用不上,也就没有注意到 前段时间 ...

最新文章

  1. 成功解决ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,问题
  2. 搜索linux中大于m文件,linux 下查找大于100M的文件(转)
  3. Windows上安装Mysql解压缩版教程
  4. 帮助打造无障碍APP Google将自动化测试GTXiLib
  5. vs 外部依赖项、附加依赖项以及如何添加依赖项目
  6. excel 多行 取消隐藏_如何在Excel 2013中隐藏和取消隐藏行和列
  7. 计算机开机键盘屏幕无反应,电脑开机后键盘显示器无反应怎么解决
  8. 诗歌之美与诗意之存在
  9. 用if函数表示大于1小于等于10的数
  10. 设计一款免费游戏的关键设计原则
  11. 【语音控制】0成本实现小爱远程开关电脑
  12. php摇号 中标 程序,摇号信息系统招标公告
  13. Arduino智能小车设计(二)
  14. 记录Unity WebGL发布到IIS服务器时遇到的坑
  15. 六级高频词汇——Group06
  16. 解决win7系统chrome证书错误问题,证书无效,不受信任的网站问题 - windows没有足够信息不能验证该证书
  17. 合肥十中高考2021成绩查询,2019合肥十中录取分数线及2019高考成绩喜报
  18. 《自然语言处理》教学上机实验报告
  19. Ocelot,自定义负载策略,完成预发布功能
  20. 商品增加库存功能,前端页面要求显示表单修改库存(二)

热门文章

  1. Java线程死亡(死掉、退出、挂掉)的几种情况
  2. java集合框架优点
  3. 判断素数的高效的方法
  4. python职业发展规划书范文_个人职业生涯与发展规划书范文
  5. [论文笔记|sonar+VIO]:Sonar Visual Inertial SLAM of Underwater Structures
  6. 简单的sql server查询
  7. 【NLP】中文分词歧义举例
  8. linux挂载硬盘步骤(简单易用,直接上手,无废话)
  9. PHP预防重复http协议,PHP HTTP协议:防盗链
  10. vue给textarea赋值可以使用v-model。