public static void Send(string message, object value)
    {
        lock (typeof(Messenger))
        {
            if (CanBeUsed(null, message))
            {
                if (s_instance.m_registeredGameObjects.ContainsKey(message))
                {
                    List <GameObject> gos = s_instance.m_registeredGameObjects [message];
                    int length            = gos.Count;

                    //SHLog.Debug("[Messenger] Enviando a mensagem '" + message + "' para '" + length + "' GameObjects registrados.");

                    for (int i = 0; i < length; i++)
                    {
                        try
                        {
                            //SHLog.Debug("[Messenger] - " + gos[i].name);
                            gos [i].SendMessage(message, value, SendMessageOptions.DontRequireReceiver);
                        }
                        catch (MissingReferenceException ex)
                        {
                            SHLog.Error("[Messenger] Error while sending message '{0}': {1}.", message, ex.Message);
                        }
                    }
                }
                else
                {
                    SHLog.Warning("[Messenger] The message '{0}' has no receivers.", message);
                }
            }
        }
    }
    private static bool CanBeUsed(GameObject go, string message)
    {
        var can = s_instance != null;

        if (!can)
        {
            if (go == null)
            {
                SHLog.Warning("[Messenger] Attempt to send the message '{0}' without the Messenger script has been add to a GameObject.", message);
            }
            else
            {
                SHLog.Warning("[Messenger] The GameObject '{0}' has attempt to register message without the Messenger script has been add to a GameObject.", go.name);
            }
        }

        return(can);
    }