添加了更多的材质函数,部分与引擎新特性重合,这是为了能够脱离引擎在多个版本中更具可移植性。
添加了多种对程序流程控制与保全的脚本,而且现在可以更快速的构建一个具有线性关系的协程了。 添加了一个支持多种模式的单维梯度控制器,类似unity的颜色梯度类型。 添加了一个用于看向某个物体的旋转控制器。 添加了一个加载宏。 完善了批处理脚本流程。
This commit is contained in:
157
Runtime/Security/ProgramFlowLinear.cs
Normal file
157
Runtime/Security/ProgramFlowLinear.cs
Normal file
@@ -0,0 +1,157 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
using XericLibrary.Runtime.Type;
|
||||
|
||||
namespace XericLibrary
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public class ProgramFlowLinear : WeaklyObject
|
||||
{
|
||||
#region ί<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
|
||||
/// <summary>
|
||||
/// <20>ָ<EFBFBD><D6B8><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>¼<EFBFBD><C2BC>б<EFBFBD>
|
||||
/// </summary>
|
||||
public event Action RecoveredCoroutineList;
|
||||
|
||||
#endregion
|
||||
|
||||
#region <EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/// <summary>
|
||||
/// <20>趨<EFBFBD>Ƿ<EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||
/// </summary>
|
||||
public bool LoopProgramFlow
|
||||
{
|
||||
get => loopProgramFlow;
|
||||
set
|
||||
{
|
||||
if(TargetEvent == null)
|
||||
loopProgramFlow = value;
|
||||
else
|
||||
Debug.LogError("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>л<EFBFBD>");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||
/// </summary>
|
||||
private bool loopProgramFlow = true;
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD>ִ<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
||||
/// </summary>
|
||||
public int MaxEmbeddedLoopCount = 100;
|
||||
|
||||
/// <summary>
|
||||
/// <20><>ǰЭ<C7B0><D0AD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>
|
||||
/// </summary>
|
||||
private int embeddedLoopCount = 0;
|
||||
|
||||
/// <summary>
|
||||
/// <20>ȴ<EFBFBD>ִ<EFBFBD>е<EFBFBD>Э<EFBFBD><D0AD>
|
||||
/// </summary>
|
||||
private LinkedList<IEnumerator> routines = new LinkedList<IEnumerator>();
|
||||
|
||||
/// <summary>
|
||||
/// <20><>ǰִ<C7B0>е<EFBFBD>Э<EFBFBD><D0AD>
|
||||
/// </summary>
|
||||
private Coroutine TargetEvent;
|
||||
|
||||
/// <summary>
|
||||
/// <20>־õ<D6BE><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
private MonoBehaviour assure;
|
||||
|
||||
/// <summary>
|
||||
/// <20><>һ<EFBFBD><D2BB>ִ<EFBFBD><D6B4>
|
||||
/// </summary>
|
||||
private bool firstTime = true;
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD>Э<EFBFBD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һϵ<D2BB><CFB5>Э<EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="recoveredListTodo"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>̵Ĺ<CCB5><C4B9>̽<EFBFBD><CCBD>ж<EFBFBD><D0B6><EFBFBD></param>
|
||||
/// <param name="assure">Э<>̴<EFBFBD><CCB4><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>ű<EFBFBD></param>
|
||||
/// <param name="executeImmediately"><3E>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>Э<EFBFBD><D0AD></param>
|
||||
/// <param name="loopProgram"><3E>趨Э<E8B6A8><D0AD>ѭ<EFBFBD><D1AD>ִ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>start<72><74><EFBFBD><EFBFBD></param>
|
||||
public ProgramFlowLinear(Action recoveredListTodo, MonoBehaviour assure, bool executeImmediately = true, bool loopProgram = true)
|
||||
{
|
||||
RecoveredCoroutineList = recoveredListTodo;
|
||||
this.loopProgramFlow = loopProgram;
|
||||
firstTime = true;
|
||||
if(executeImmediately)
|
||||
StartCoroutine();
|
||||
}
|
||||
|
||||
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
||||
/// </summary>
|
||||
/// <param name="routine"></param>
|
||||
public void AddCoroutine(IEnumerator routine)
|
||||
{
|
||||
routines.AddLast(routine);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Э<>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public void StartCoroutine()
|
||||
{
|
||||
if(TargetEvent == null)
|
||||
{
|
||||
if(firstTime && routines.Count <= 0)
|
||||
RecoveredCoroutineList();
|
||||
if(routines.Count <= 0)
|
||||
{
|
||||
Debug.LogError("Э<>̲<EFBFBD><CCB2><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2>dz<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λջΪ<D5BB><CEAA>");
|
||||
return;
|
||||
}
|
||||
TargetEvent = assure.StartCoroutine(routines.First.Value);
|
||||
|
||||
routines.RemoveFirst();
|
||||
firstTime = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ִ<><D6B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Э<EFBFBD><D0AD>
|
||||
/// </summary>
|
||||
public void NextCoroutine()
|
||||
{
|
||||
if(loopProgramFlow && routines.Count <= 0)
|
||||
RecoveredCoroutineList();
|
||||
if(TargetEvent != null)
|
||||
TargetEvent = null;
|
||||
else
|
||||
Debug.LogError("ִ<>е<EFBFBD>Э<EFBFBD>̲<EFBFBD><CCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD>ʼ<EFBFBD><CABC>");
|
||||
StartCoroutine();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>ִ<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԽԤ<D4BD>跶Χ<E8B7B6><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֹͣЭ<D6B9><D0AD>
|
||||
/// </summary>
|
||||
public bool TryPromoteEmbedded()
|
||||
{
|
||||
if(++embeddedLoopCount > MaxEmbeddedLoopCount)
|
||||
{
|
||||
embeddedLoopCount = 0;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user