Ejemplo n.º 1
0
    public void GlobalMessage(string trigger)
    {
        if (GlobalMessageEventManager.instance != null)
        {
            //If the manager is correctly initialized..
            GlobalMessageEventManager.sendToReceivers(trigger);                 //..let him delegate the message to all the registered receivers.
        }
        else
        {
            //Alternatively search for all gameobjects with an receiver and give them the message.
            //This will not transmit messages over multible scenes and has an awful performance.
            //It should not be possible to enter this path, because the manager should be automatically present,
            //if one receiver is or was in this or an previous scene (except something destroyed it).
            Debug.LogWarning("'GlobalMessageEventManager' is missing. This shouldn't happen, if one receiver was or is within the game.");

            GameObject[] gos = (GameObject[])GameObject.FindObjectsOfType(typeof(GameObject));
            foreach (GameObject go in gos)
            {
                if (go && go.transform.parent == null)
                {
                    GlobalMessageEventReceiver[] rx = go.GetComponentsInChildren <GlobalMessageEventReceiver> ();
                    if (rx != null)
                    {
                        if (rx.Length > 0)
                        {
                            foreach (GlobalMessageEventReceiver r in rx)
                            {
                                r.globalMessage(trigger);
                            }
                        }
                    }
                }
            }
        }
    }
 //create a message manager, if it isn't existing yet
 void createManagerIfNonExisting()
 {
     if (GlobalMessageEventManager.instance == null)
     {
         GameObject go = new GameObject("GlobalMessageEventManager");
         go.AddComponent <GlobalMessageEventManager>();
         GlobalMessageEventManager gem = go.GetComponent <GlobalMessageEventManager> ();
         gem.buildAwake();
     }
 }
    /// <summary>
    /// GlobalMessageEventManager 스크립트가 붙어 있는 객체가 없는 경우 객체를 새로 만들고 나를 부착한다.
    /// </summary>
    void createManagerIfNonExisting()
    {
        /// GlobalMessageEventManager 클래스의 인스턴스에 아무것도 할당안되 있으면,
        if (GlobalMessageEventManager.나자신 == null)
        {
            /// "GlobalMessageEventManager" 이름의 새로운 게임 오브젝트를 만들어서 로컬변수에 할당하고
            GameObject go = new GameObject("GlobalMessageEventManager");
            /// GlobalMessageEventManager 클래스를 부착하고
            go.AddComponent <GlobalMessageEventManager>();

            GlobalMessageEventManager gem = go.GetComponent <GlobalMessageEventManager> ();
            gem.buildAwake();
        }
    }
Ejemplo n.º 4
0
 //If no manager exists yet, mark the gameobject as 'DontDestroyOnLoad' and create receiver-list,
 //else self destruct.
 public void buildAwake()
 {
     if (instance == null)
     {
         instance = this;
         GameObject.DontDestroyOnLoad(gameObject);
         receivers = new List <GlobalMessageEventReceiver> ();
     }
     else
     {
         if (instance != this)
         {
             Destroy(gameObject);
         }
     }
 }
Ejemplo n.º 5
0
    /// <summary>
    /// 내가 붙어 있는 'GlobaMessageEventManager'를 싱글톤 패턴으로 사용하기 위해 객체를 하나만 만들기 위한 메서드.
    /// 아직 매니저가 없다면 gameObject를 'DontDestroyOnLoad'로 표시하고 receiver-list를 생성하십시오. 그렇지 않으면 자체 파괴하십시오.
    /// </summary>
    public void buildAwake()
    {
        if (나자신 == null)
        {
            /// 나자신을 할당한후 다른씬에서도 내 오브젝트가 사라지지 않도록 계속 유지시킨다.
            나자신 = this;
            GameObject.DontDestroyOnLoad(gameObject);

            receivers = new List <GlobalMessageEventReceiver> ();
        }
        else
        {
            if (나자신 != this)
            {
                Destroy(gameObject);
            }
        }
    }
 //unregister the receiver at the manager, to stop the delegation of messages
 void OnDestroy()
 {
     GlobalMessageEventManager.unregisterMessageReceiver(this);
 }
 void Start()
 {
     createManagerIfNonExisting();
     //register the receiver at the manager, to get the delegation of messages
     GlobalMessageEventManager.registerMessageReceiver(this);
 }
 protected virtual void OnStateExited()
 {
     GlobalMessageEventManager.sendToReceivers(OnExitMessage);
 }