/// <summary>
        /// 委托list转换为字符串数组
        /// </summary>

        static public string[] GetNames(List <Entry> list, string choice, out int index)
        {
            index = 0;
            string[] names = new string[list.Count + 1];
            names[0] = "<GameObject>";

            for (int i = 0; i < list.Count;)
            {
                Entry  ent = list[i];
                string del = GOGUITools.GetFuncName(ent.target, ent.name);
                names[++i] = del;
                if (index == 0 && string.Equals(del, choice))
                {
                    index = i;
                }
            }
            return(names);
        }
        /// <summary>
        /// 收集从指定游戏对象的委托列表。
        /// </summary>
        static public List <Entry> GetMethods(GameObject target)
        {
            MonoBehaviour[] comps = target.GetComponents <MonoBehaviour>();

            List <Entry> list = new List <Entry>();

            for (int i = 0, imax = comps.Length; i < imax; ++i)
            {
                MonoBehaviour mb = comps[i];
                if (mb == null)
                {
                    continue;
                }

                MethodInfo[] methods = mb.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public);

                for (int b = 0; b < methods.Length; ++b)
                {
                    MethodInfo mi = methods[b];

                    if (mi.ReturnType == typeof(void))
                    {
                        string name = mi.Name;
                        if (name == "Invoke")
                        {
                            continue;
                        }
                        if (name == "InvokeRepeating")
                        {
                            continue;
                        }
                        if (name == "CancelInvoke")
                        {
                            continue;
                        }
                        if (name == "StopCoroutine")
                        {
                            continue;
                        }
                        if (name == "StopAllCoroutines")
                        {
                            continue;
                        }
                        if (name == "BroadcastMessage")
                        {
                            continue;
                        }
                        if (name.StartsWith("SendMessage"))
                        {
                            continue;
                        }
                        if (name.StartsWith("set_"))
                        {
                            continue;
                        }

                        Entry ent = new Entry();
                        ent.target = mb;
                        ent.name   = mi.Name;
                        list.Add(ent);
                    }
                }
            }
            return(list);
        }