/// <summary> /// 初期化。 /// 呼ばれるLuaの関数は<example>Start_<シーン名>(<所属するシーン>)</example> /// </summary> public override void Start(Scene prev) { LuaScript.GetFunction("Start_" + ID).Call(this); base.Start(prev); }
/// <summary> /// 指定したシーンを削除します。 /// 同じIDのシーンが削除対象です。 /// </summary> /// <param name="item"></param> /// <returns></returns> public static bool Remove(Scene item) { var e = instance.scenes.Where(p => p.ID == item.ID).First(); if (e == null) return false; e.Exit(); instance.scenes.Remove(e); return true; }
/// <summary> /// 配列に内容をコピーします。 /// </summary> /// <param name="array"></param> /// <param name="arrayIndex"></param> public static void CopyTo(Scene[] array, int arrayIndex) { instance.scenes.CopyTo(array, arrayIndex); }
/// <summary> /// 指定シーンが存在するか判定します。 /// 判定基準はIDです。 /// </summary> /// <param name="item">シーン</param> /// <returns></returns> public static bool Contains(Scene item) { return instance.scenes.Any(p => p.ID == item.ID); }
/// <summary> /// 呼び出し源を指定してシーンを追加 /// </summary> /// <param name="item">追加するシーン</param> /// <param name="calp">呼び出し元</param> public static void Add(Scene item, Scene calp) { if (instance.scenes.Any(p => p.ID == item.ID)) { throw new ArgumentException("指定されたIDのシーンがすでに再生中です", "item"); } instance.scenes.Add(item); item.Start(calp); }
/// <summary> /// シーン開始時に呼び出される。 /// </summary> /// <param name="prev">開始させたシーン</param> public virtual void Start(Scene prev) { #if DEBUG Console.WriteLine("{0} によって {1} が開始", prev != null ? prev.ID : "", ID); #endif }