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

前言

前面两节已经介绍了本人在项目中使用的结合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

猜你喜欢

转载自blog.csdn.net/dong89801033/article/details/127859551
今日推荐