您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
61 行
1.6 KiB
61 行
1.6 KiB
using UnityEngine;
|
|
|
|
namespace GameplayIngredients.Events
|
|
{
|
|
[AddComponentMenu(ComponentMenu.eventsPath + "On Game Manager Level Start")]
|
|
public class OnGameManagerLevelStart : EventBase
|
|
{
|
|
public enum GameManagerLevelType
|
|
{
|
|
MainMenu,
|
|
GameLevel
|
|
}
|
|
|
|
public GameManagerLevelType levelType { get { return m_LevelType; } }
|
|
|
|
[SerializeField]
|
|
protected GameManagerLevelType m_LevelType = GameManagerLevelType.GameLevel;
|
|
|
|
string m_Message;
|
|
|
|
public Callable[] OnMessageRecieved;
|
|
|
|
void OnEnable()
|
|
{
|
|
m_Message = GetMessage(m_LevelType);
|
|
Messager.RegisterMessage(m_Message, Execute);
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
Messager.RemoveMessage(m_Message, Execute);
|
|
}
|
|
|
|
static string GetMessage(GameManagerLevelType type)
|
|
{
|
|
switch(type)
|
|
{
|
|
case GameManagerLevelType.MainMenu: return GameManager.MainMenuStartMessage;
|
|
default:
|
|
case GameManagerLevelType.GameLevel: return GameManager.GameLevelStartMessage;
|
|
}
|
|
}
|
|
|
|
void Execute(GameObject instigator = null)
|
|
{
|
|
try
|
|
{
|
|
Callable.Call(OnMessageRecieved, instigator);
|
|
}
|
|
catch (System.Exception e)
|
|
{
|
|
UnityEngine.Debug.LogError(string.Format("OnMessageEvent : Exception Caught while catching message '{0}' on Object '{1}'", m_Message, gameObject.name));
|
|
UnityEngine.Debug.LogException(e);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|