Archived
添加一些单例系统,材质方法
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
using XericLibrary.Runtime.Type;
|
||||
|
||||
namespace XericLibrary.Runtime.Security
|
||||
{
|
||||
/// <summary>
|
||||
/// 程序流程保全
|
||||
/// </summary>
|
||||
public class ProgramFlowSecurity : WeaklyObject
|
||||
{
|
||||
#region 字段属性
|
||||
|
||||
/// <summary>
|
||||
/// 保护标志位
|
||||
/// </summary>
|
||||
private int conservativeFlag;
|
||||
|
||||
/// <summary>
|
||||
/// 单步标志位
|
||||
/// </summary>
|
||||
private int DoOnceFlag;
|
||||
|
||||
#endregion
|
||||
|
||||
#region 构造
|
||||
|
||||
public ProgramFlowSecurity()
|
||||
{
|
||||
conservativeFlag = 0;
|
||||
DoOnceFlag = 0;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 方法
|
||||
|
||||
/// <summary>
|
||||
/// 标志一段程序的开始
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
public void Start<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
conservativeFlag |= Convert.ToInt32(site);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 标志一段程序的结束
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
public void Finish<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
conservativeFlag &= ~Convert.ToInt32(site);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试开始一段程序
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
/// <returns></returns>
|
||||
public bool TryStart<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
if(GetFlag(site))
|
||||
return false;
|
||||
Start(site);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始执行一次
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
/// <returns></returns>
|
||||
public bool DoOnceStart<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
if(GetFlag(site))
|
||||
return false;
|
||||
DoOnceFlag |= Convert.ToInt32(site);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复位执行一次的标志
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
public void ResetDoOnce<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
DoOnceFlag &= ~Convert.ToInt32(site);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取一段程序的标志位
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
/// <returns></returns>
|
||||
private bool GetFlag<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
return (conservativeFlag & Convert.ToInt32(site)) > 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取一段程序的标志位
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="site"></param>
|
||||
/// <returns></returns>
|
||||
private bool GetDoOnce<T>(T site)
|
||||
where T : struct, Enum
|
||||
{
|
||||
return (DoOnceFlag & Convert.ToInt32(site)) > 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a7fec265b4bc05249b53e040d279b079
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user