Ejemplo n.º 1
0
    private static void AddButtonListener(GameObject _go)
    {
        Button[] bts = _go.GetComponentsInChildren <Button>();

        foreach (Button bt in bts)
        {
            int num = bt.onClick.GetPersistentEventCount();

            for (int i = 0; i < num; i++)
            {
                if (bt.onClick.GetPersistentTarget(i) is MonoBehaviour)
                {
                    MonoBehaviour target = (MonoBehaviour)bt.onClick.GetPersistentTarget(i);

                    AddButtonListener addButtonListener = target.gameObject.AddComponent <AddButtonListener>();

                    addButtonListener.button = bt;

                    addButtonListener.scriptName = target.name;

                    addButtonListener.methodName = bt.onClick.GetPersistentMethodName(i);
                }
            }
        }
    }
Ejemplo n.º 2
0
    private static void AddButtonListener(GameObject _go, ref bool _hasChange)
    {
        Button bt = _go.GetComponent <Button>();

        if (bt != null)
        {
            int num = bt.onClick.GetPersistentEventCount();

            List <int> delList = null;

            for (int i = 0; i < num; i++)
            {
                UnityEngine.Object t = bt.onClick.GetPersistentTarget(i);

                string methodName = bt.onClick.GetPersistentMethodName(i);

                if (t is MonoBehaviour)
                {
                    if (delList == null)
                    {
                        delList = new List <int>();
                    }

                    delList.Add(i);

                    MonoBehaviour target = t as MonoBehaviour;

                    AddButtonListener addButtonListener = target.gameObject.AddComponent <AddButtonListener>();

                    addButtonListener.button = bt;

                    addButtonListener.scriptName = target.name;

                    addButtonListener.methodName = methodName;

                    _hasChange = true;
                }
            }

            if (delList != null)
            {
                for (int i = 0; i < delList.Count; i++)
                {
                    UnityEventTools.RemovePersistentListener(bt.onClick, delList[i] - i);
                }
            }
        }

        for (int i = 0; i < _go.transform.childCount; i++)
        {
            AddButtonListener(_go.transform.GetChild(i).gameObject, ref _hasChange);
        }
    }