【C#】Delegate使用 Event 使用例 第三弾
EventManagerでイベントの起点を束ねる。
1. 全てのイベントを管理するEventManager
2. Eventの起点
3. どんなEventを呼ぶかを記述
1. 全てのイベントを管理するEventManager
EventManager.cs
using UnityEngine; using System.Collections; public class EventManager { public delegate void GameChangeScene(GameController.GAME_SCENE scene); public static event GameChangeScene onGameChangeSceneEvent; public static void GameChangeSceneMethod(GameController.GAME_SCENE scene) { if (onGameChangeSceneEvent != null) onGameChangeSceneEvent(scene); } }
2. Eventの起点
ボスが殺された時にshareUIを呼ぶ。
EnemyManager.cs
void HandleonBossKilledEvent (){ EventManager.GameChangeSceneMethod (GameController.GAME_SCENE.GAME_SCENE_SHARE); _wave =0; _maxWave = 10; GameController._stage++; GameDataManager.SaveStage(GameController._stage); EventManager.ChangeStageMethod(); DisableBossMode (); SpawnEnemies (); }
3. どんなEventを呼ぶかを記述
ShareUIを表示する
UIShare.cs
void OnEnable(){ EventManager.onGameChangeSceneEvent += HandleonGameChangeSceneEvent; } void OnDisable(){ EventManager.onGameChangeSceneEvent -= HandleonGameChangeSceneEvent; } void HandleonGameChangeSceneEvent (GameController.GAME_SCENE scene) { switch (scene) { case GameController.GAME_SCENE.GAME_SCENE_SHARE: _container.SetActive(true); _anim.Play ("PaperNewsFlashEntrance", -1, 0f); AudioManager.Instance.PlaySound("sfxNewsFlash"); break; default: _container.SetActive(false); break; } }