主体就是一个大的Action列表
/// <summary>
/// 剧情流程控制器, 别的ProcessControlXX都继承实现此类
/// </summary>
public class ProcessControl : MonoBehaviour//不继承Mono就不能用协程, so
{
public static ProcessControl instance;
//Action列表, 即一步一步的剧情
protected List<Action> actions;
//步骤数
private int level;
private int Level
{
get
{
return level;
}
set
{
level = value;
if (level < 0)
{
level = 0;
}
else if (level > actions.Count - 1)
{
level = actions.Count - 1;
}
actions[level].Invoke();
}
}
/// <summary>
/// 剧情第一步
/// </summary>
public void StartLevel()
{
Level = 0;
}
/// <summary>
/// 直接剧情最后一步
/// </summary>
public void EndLevel()
{
Level = actions.Count - 1;
}
/// <summary>
/// 剧情进行下一步
/// </summary>
public void NextLevel()
{
Level++;
}
/// <summary>
/// 上一步, 一般用不到
/// </summary>
public void ProLevel()
{
Level--;
}
/// <summary>
/// 初始化, 子类继承该方法的时候要先new一个ActionList, 再base.Init();
/// </summary>
protected virtual void Init()
{
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy(gameObject);
}
//启动
StartLevel();
}
//默认立即启动, 放在Start里是为了给其他类的Awake和static留出初始化的时间
private void Start()
{
Init();
}
}