public void EndChain() { if (chainStack_.Count == 0) { UnityEngine.Debug.LogError("チェインが開始していません"); return; } ChainAction lastChainAction = chainStack_.Pop(); if (lastChainAction.HasAction()) { if (chainStack_.Count > 0) { chainStack_.Peek().AddChain(lastChainAction); } else { if (currentIndex_ + 1 < actions_.Count) { actions_.RemoveRange(currentIndex_ + 1, actions_.Count - (currentIndex_ + 1)); } ++currentIndex_; actions_.Add(lastChainAction); OnChainEnded(); } } else { if (chainStack_.Count == 0) { OnChainEnded(); } } }
public void StartChain(ActionManagerProxy proxy = null) { if (chainStack_.Count == 0) { OnChainStarted(); } ChainAction chainAction = new ChainAction(); chainAction.Proxy = proxy; chainStack_.Push(chainAction); }