Unity简易流程步骤管理器v1.0.1更新

效果演示:

更新内容:

  • StepManager添加 清除步骤 和 设置步骤 方法;
  • StepDemo添加 多流程选择 和 GUI提示;
  • 添加代码注释。

代码更新:

using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 简易流程管理器
/// </summary>
public static class StepManager
{
    /// <summary>
    /// 步骤索引
    /// </summary>
    public static int Index = 1;
    /// <summary>
    /// 步骤事件,用于封装成事件方法
    /// </summary>
    private static List<Action> Step = new List<Action>();
    /// <summary>
    /// 执行下一步骤
    /// </summary>
    public static void NextStep()
    {
        //检查是否包含当前步骤
        if (Index - 1 < Step.Count)
        {
            //执行当前步骤内的事件
            Step[Index - 1].Invoke();
            Debug.Log(string.Format("<color=yellow>{0}</color>", $"执行步骤:{Index}"));
        }
        else
        {
            Debug.Log(string.Format("<color=red>{0}</color>", "超出步骤管理器"));
        }
        Index++;
    }
    /// <summary>
    /// 添加步骤
    /// </summary>
    public static void StepAdd(Action action)
    {
        Step.Add(action);
    }
    /// <summary>
    /// 清除步骤
    /// </summary>
    public static void StepClear()
    {
        Step.Clear();
        Index = 1;
    }
    /// <summary>
    /// 设置步骤:下一步骤将从指定数值步骤开始
    /// </summary>
    public static void StepSet(int index)
    {
        if (index >= 1 && index <= Step.Count)
        {
            Index = index;
            Debug.Log(string.Format("<color=yellow>{0}</color>", $"步骤索引设置为:{Index}"));
        }
        else
        {
            Debug.Log(string.Format("<color=red>{0}</color>", $"无效的步骤索引:{index}"));
        }
    }
}

using TS.Tools;
using UnityEngine;
/// <summary>
/// 简易流程管理器测试Demo
/// </summary>
public class StepDemo : MonoBehaviour
{
    private void Awake()
    {
        //默认开始流程测试一
        ProcessTest01();
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            StepManager.NextStep();
        }
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            //开始流程测试一
            ProcessTest01();
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            //开始流程测试二
            ProcessTest02();
        }
        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            //设置流程索引至第3步
            StepManager.StepSet(3);
        }
    }
    /// <summary>
    /// GUI提示
    /// </summary>
    void OnGUI()
    {
        GUIStyle fontStyle = new GUIStyle();
        fontStyle.alignment = TextAnchor.UpperLeft;
        fontStyle.fontSize = 40;

        fontStyle.normal.textColor = Color.white; 

        GUI.Label(new Rect(20, 20, 50, 60),
            "键盘空格:执行下一步\n\n" +
            "键盘 1 键:开始流程测试一\n\n" +
            "键盘 2 键:开始流程测试二\n\n" +
            "键盘 3 键:将当前流程步骤跳转至第 3 步", fontStyle);
    }
    /// <summary>
    /// 流程测试一
    /// </summary>
    void ProcessTest01()
    {
        //清除步骤
        StepManager.StepClear();
        Debug.Log(string.Format("<color=cyan>{0}</color>", "开始流程测试一"));

        //第一步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第1步");
        });
        //第二步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第2步");
        });
        //第三步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第3步");
        });
        //第四步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第4步");
        });
        //第五步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第5步");
        });
        //第六步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第6步");
        });
        //第七步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试一:执行第7步");
        });
    }
    /// <summary>
    /// 流程测试二
    /// </summary>
    public void ProcessTest02()
    {
        //清除步骤
        StepManager.StepClear();
        Debug.Log(string.Format("<color=cyan>{0}</color>", "开始流程测试二"));

        //第一步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第1步");
        });
        //第二步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第2步");
        });
        //第三步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第3步");
        });
        //第四步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第4步");
        });
        //第五步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第5步");
        });
        //第六步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第6步");
        });
        //第七步
        StepManager.StepAdd(delegate
        {
            Debug.Log("测试二:执行第7步");
        });
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值