2020-07-04 14:41:25 +08:00
|
|
|
/*
|
|
|
|
|
* Advanced C# messenger by Ilya Suzdalnitski. V1.0
|
|
|
|
|
*
|
|
|
|
|
* Based on Rod Hyde's "CSharpMessenger" and Magnus Wolffelt's "CSharpMessenger Extended".
|
|
|
|
|
*
|
|
|
|
|
* Features:
|
|
|
|
|
* Prevents a MissingReferenceException because of a reference to a destroyed message handler.
|
|
|
|
|
* Option to log all messages
|
|
|
|
|
* Extensive error detection, preventing silent bugs
|
|
|
|
|
*
|
|
|
|
|
* Usage examples:
|
|
|
|
|
1. Messenger.AddListener<GameObject>("prop collected", PropCollected);
|
|
|
|
|
Messenger.Broadcast<GameObject>("prop collected", prop);
|
|
|
|
|
2. Messenger.AddListener<float>("speed changed", SpeedChanged);
|
|
|
|
|
Messenger.Broadcast<float>("speed changed", 0.5f);
|
|
|
|
|
*
|
|
|
|
|
* Messenger cleans up its evenTable automatically upon loading of a new level.
|
|
|
|
|
*
|
|
|
|
|
* Don't forget that the messages that should survive the cleanup, should be marked with Messenger.MarkAsPermanent(string)
|
|
|
|
|
* 参考资料
|
|
|
|
|
* http://wiki.unity3d.com/index.php?title=Advanced_CSharp_Messenger
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
namespace Coolape
|
|
|
|
|
{
|
2020-08-05 07:08:47 +08:00
|
|
|
[XLua.CSharpCallLua]
|
|
|
|
|
public delegate void Callback (params object[] objs);
|
|
|
|
|
[XLua.CSharpCallLua]
|
|
|
|
|
public delegate void Callback<T> (T arg1);
|
|
|
|
|
[XLua.CSharpCallLua]
|
|
|
|
|
public delegate void Callback<T, U> (T arg1, U arg2);
|
|
|
|
|
[XLua.CSharpCallLua]
|
|
|
|
|
public delegate void Callback<T, U, V> (T arg1, U arg2, V arg3);
|
2020-07-04 14:41:25 +08:00
|
|
|
}
|