【Unity学习】完全基于Ultimate Replay 2.0的UI回放系统
完全基于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回放系统相关推荐
- 深度学习实战—基于TensorFlow 2.0的人工智能开发应用
作者:辛大奇 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-10-01 深度学习实战-基于TensorFlow 2.0的人工智能开发应用
- 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码
[Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...
- unity学习路线参考——转载自csdn
版权声明: https://blog.csdn.net/qq_22521529/article/details/83108837 Unity3D学习路线与学习经验分享 作者:15游02 丁祺 你好,这 ...
- Unity学习资源指南[精心整理]
前言 进入一个领域,最直接有效的方法就是寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的激 ...
- Unity学习日志1
unity入门 1.学习路线 初级:1.配置 2.unity官方入门教程 3.2d入门 4.3d入门 b站学习和官网learn.unity 进阶:核心知识点 中级: 高级: 2.基础阶段 unity安 ...
- DY_M的Unity学习日记 1 ——AnimationClip的读取与代码生成
DY_M的Unity学习日记 1 --AnimationClip的读取与代码生成 https://www.jianshu.com/p/80b2bc98ac5d 作为一个"不务正业" ...
- Unity学习资源汇总 2021/4/16 更新
打算学一学Unity,然后四处查找资料,发现 资源真的是鱼龙混杂,国内很多教程都是半教程半卖课性质的,看得人头疼. 想找本好书,但是发现大部分的书籍都是基于Unity5.x的,而目前已经有Unity2 ...
- [Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格
[Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格 本文并非原创,只是本人的学习记录,原文是由放牛的星星老师翻译Catlike系列教程 链接: https://mp.weixin.qq ...
- EMAIL发送系统(C#+基于SMTP认证) 2.0
这个是对于 EMAIL发送系统(C#+基于SMTP认证) 1.0 的改版这个第一版是2002年11月写的,过了一年半了,才有人提意见,就修正了一下,因为后来做的项目一直用不上,也就没有注意到 前段时间 ...
最新文章
- 成功解决ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,问题
- 搜索linux中大于m文件,linux 下查找大于100M的文件(转)
- Windows上安装Mysql解压缩版教程
- 帮助打造无障碍APP Google将自动化测试GTXiLib
- vs 外部依赖项、附加依赖项以及如何添加依赖项目
- excel 多行 取消隐藏_如何在Excel 2013中隐藏和取消隐藏行和列
- 计算机开机键盘屏幕无反应,电脑开机后键盘显示器无反应怎么解决
- 诗歌之美与诗意之存在
- 用if函数表示大于1小于等于10的数
- 设计一款免费游戏的关键设计原则
- 【语音控制】0成本实现小爱远程开关电脑
- php摇号 中标 程序,摇号信息系统招标公告
- Arduino智能小车设计(二)
- 记录Unity WebGL发布到IIS服务器时遇到的坑
- 六级高频词汇——Group06
- 解决win7系统chrome证书错误问题,证书无效,不受信任的网站问题 - windows没有足够信息不能验证该证书
- 合肥十中高考2021成绩查询,2019合肥十中录取分数线及2019高考成绩喜报
- 《自然语言处理》教学上机实验报告
- Ocelot,自定义负载策略,完成预发布功能
- 商品增加库存功能,前端页面要求显示表单修改库存(二)
热门文章
- Java线程死亡(死掉、退出、挂掉)的几种情况
- java集合框架优点
- 判断素数的高效的方法
- python职业发展规划书范文_个人职业生涯与发展规划书范文
- [论文笔记|sonar+VIO]:Sonar Visual Inertial SLAM of Underwater Structures
- 简单的sql server查询
- 【NLP】中文分词歧义举例
- linux挂载硬盘步骤(简单易用,直接上手,无废话)
- PHP预防重复http协议,PHP HTTP协议:防盗链
- vue给textarea赋值可以使用v-model。