95 lines
2.3 KiB
C#
95 lines
2.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
//消息管理器
|
|
public class EventManager : MonoSingleton<EventManager>
|
|
{
|
|
public delegate void EventHandler(params object[] args);
|
|
|
|
private Dictionary<YogaEventType, Action> _actionDic = new Dictionary<YogaEventType, Action>();
|
|
private Dictionary<YogaEventType, EventHandler> _actionsDic = new Dictionary<YogaEventType, EventHandler>();
|
|
public void AddEventListener(YogaEventType eventName, Action handler)
|
|
{
|
|
if (!_actionDic.ContainsKey(eventName))
|
|
{
|
|
_actionDic.Add(eventName, handler);
|
|
}
|
|
else
|
|
{
|
|
_actionDic[eventName] -= handler;
|
|
_actionDic[eventName] += handler;
|
|
}
|
|
}
|
|
|
|
public void RemoveEventListener(YogaEventType eventName, Action handler)
|
|
{
|
|
if (!_actionDic.ContainsKey(eventName))
|
|
return;
|
|
|
|
_actionDic[eventName] -= handler;
|
|
}
|
|
|
|
public void Dispatch(YogaEventType eventName)
|
|
{
|
|
if (!_actionDic.ContainsKey(eventName))
|
|
return;
|
|
|
|
_actionDic[eventName]?.Invoke();
|
|
}
|
|
|
|
//带参数的事件
|
|
public void AddEventListener(YogaEventType eventName, EventHandler handler)
|
|
{
|
|
if (!_actionsDic.ContainsKey(eventName))
|
|
{
|
|
_actionsDic.Add(eventName, handler);
|
|
}
|
|
else
|
|
{
|
|
_actionsDic[eventName] -= handler;
|
|
_actionsDic[eventName] += handler;
|
|
}
|
|
}
|
|
|
|
public void RemoveEventListener(YogaEventType eventName, EventHandler handler)
|
|
{
|
|
if (!_actionsDic.ContainsKey(eventName))
|
|
return;
|
|
|
|
_actionsDic[eventName] -= handler;
|
|
}
|
|
|
|
public void Dispatch(YogaEventType eventName, params object[] param)
|
|
{
|
|
if (!_actionsDic.ContainsKey(eventName))
|
|
return;
|
|
|
|
_actionsDic[eventName]?.Invoke(param);
|
|
}
|
|
}
|
|
|
|
public enum YogaEventType
|
|
{
|
|
StartMotionCapture,
|
|
StopMotionCapture,
|
|
Action_End,
|
|
UI_ScoreUpdate,
|
|
Action_Start,
|
|
PoseEstimate,
|
|
Action_Success,
|
|
Action_Fail,
|
|
PlayAnimation,
|
|
UpdateProgress,
|
|
ShowHint,
|
|
ShowMessage,
|
|
ChangeCaptureCameraDevice,
|
|
PlayCastVoice,
|
|
DEBUG_CONSOLE_ChangeCamMode,
|
|
Action_MoveDistanceExactly,
|
|
Action_SpeedTooFast,
|
|
Action_SpeedTooSlow,
|
|
Action_MoveDistanceNotAccurate,
|
|
UI_LevelFinished,
|
|
} |