public IEnumerator Wait(string spriteTags, string[] args) { float i; if (!float.TryParse(NovelHelper.CombineAll(args), out i)) { throw new NRuntimeException("不正な数値です."); } yield return(new WaitForSeconds(i)); }
int GetLine(string label) { // Nullチェックと整形 label = NovelHelper.GetLabelString(label); if (!code.Labels.ContainsKey(label)) { throw new NRuntimeException($"ラベル \"{label}\"が存在しません."); } return(code.Labels[label]); }
public IEnumerator Goto(string t, params string[] args) { if (args.Length == 0) { throw new NRuntimeException("移動先のラベルが指定されていません."); } var label = GetLine(NovelHelper.CombineAll(args)); // 移動する Goto(label); yield break; }
/// <summary> /// 指定されたラベルから,コード実行を行います.ラベルが空であったり,存在しない場合冒頭から実行します. /// </summary> /// <returns>コルーチンを返却します.MonoBehaviourで実行するようにしてください.</returns> /// <param name="label">Label.</param> public IEnumerator Call(string label = default(string)) { ProgramCounter = 0; NullCheck(code); label = NovelHelper.GetLabelString(label); if (!string.IsNullOrWhiteSpace(label)) { if (code.Labels.ContainsKey(label)) { ProgramCounter = code.Labels[label]; } } IsRunning = true; return(StartEngine()); }