コード例 #1
0
    public bool RemoveEvent(string name, UIEventType ev, EventDelegate.Callback callback)
    {
        GUILink.UILink uILink = this.GetUILink(name);
        bool           result;

        if (uILink == null)
        {
            Debug.Log(string.Format("[GUILink] AddEvent object {0} is not exist", name));
            result = false;
        }
        else
        {
            UIEventTrigger uIEventTrigger = uILink.Get <UIEventTrigger>();
            if (uIEventTrigger == null)
            {
                result = false;
            }
            else
            {
                List <EventDelegate> delegateList = GUILink.GetDelegateList(uIEventTrigger, ev);
                result = (delegateList != null && EventDelegate.Remove(delegateList, callback));
            }
        }
        return(result);
    }
コード例 #2
0
ファイル: GUILinkEditor.cs プロジェクト: unstephen/Q3
    public override void OnInspectorGUI()
    {
        GUILink link = target as GUILink;

        GUI.changed = false;
        if (link.Links != null)
        {
            RegisterUndo("GUILink Change", link);
            for (int i = 0; i < link.Links.Count; i++)
            {
                GUILink.UILink uilink  = link.Links[i];
                GameObject     linkobj = uilink.LinkObj;

                if (!linkobj)
                {
                    uilink.Name = errostr;
                    continue;
                }
                if (linkobj)
                {
                    if (string.IsNullOrEmpty(uilink.Name) || uilink.Name == errostr)
                    {
                        uilink.Name = linkobj.name;
                    }
                    if (!uilink.component || uilink.component.gameObject != linkobj.gameObject)
                    {
                        uilink.component = linkobj.gameObject.GetComponent <MonoBehaviour>();
                    }
                }
            }
            EditorUtility.SetDirty(link);
        }
        base.OnInspectorGUI();
    }
コード例 #3
0
    public EventDelegate SetEvent(string name, UIEventType ev, EventDelegate.Callback callback, float interval = 0f)
    {
        GUILink.UILink uILink = this.GetUILink(name);
        EventDelegate  result;

        if (uILink == null)
        {
            Debug.Log(string.Format("[GUILink] AddEvent object {0} is not exist", name));
            result = null;
        }
        else
        {
            UIEventTrigger uIEventTrigger = uILink.Get <UIEventTrigger>();
            if (null == uIEventTrigger)
            {
                uIEventTrigger = uILink.Add <UIEventTrigger>();
            }
            List <EventDelegate> delegateList = GUILink.GetDelegateList(uIEventTrigger, ev);
            if (delegateList != null)
            {
                result = EventDelegate.Set(delegateList, callback, interval);
            }
            else
            {
                result = null;
            }
        }
        return(result);
    }
コード例 #4
0
 public void RemoveComponent <T>(string obj_name) where T : UGuiForm
 {
     GUILink.UILink uILink = this.GetUILink(obj_name);
     if (uILink != null)
     {
         uILink.RemoveComponent <T>();
     }
 }
コード例 #5
0
 private GUILink.UILink GetUILink(string name)
 {
     this.DoInitIfDont();
     GUILink.UILink uILink = null;
     GUILink.UILink result;
     if (this.all_objs.TryGetValue(name, out uILink))
     {
         result = uILink;
     }
     else
     {
         result = null;
     }
     return(result);
 }
コード例 #6
0
    private GameObject GetGameObject(string name)
    {
        GUILink.UILink uILink = this.GetUILink(name);
        GameObject     result;

        if (uILink == null)
        {
            result = null;
        }
        else
        {
            result = uILink.LinkObj;
        }
        return(result);
    }
コード例 #7
0
    public T GetComponent <T>(string obj_name) where T : UGuiComponent
    {
        GUILink.UILink uILink = this.GetUILink(obj_name);
        T result;

        if (uILink == null)
        {
            result = default(T);
        }
        else
        {
            result = uILink.GetComponent <T>();
        }
        return(result);
    }
コード例 #8
0
 public void ReBuildLinkMap()
 {
     if (this.Links != null)
     {
         this.all_objs.Clear();
         for (int i = 0; i < this.Links.Count; i++)
         {
             GUILink.UILink uILink = this.Links[i];
             if (uILink != null && uILink.LinkObj)
             {
                 this.all_objs[uILink.Name] = uILink;
             }
         }
     }
 }
コード例 #9
0
    public GameObject Get(string name)
    {
        this.DoInitIfDont();
        GUILink.UILink uILink = null;
        this.all_objs.TryGetValue(name, out uILink);
        GameObject result;

        if (uILink == null)
        {
            Debug.Log(string.Format("[GUILink] Get object {0} is not exist", name));
            result = null;
        }
        else
        {
            result = uILink.LinkObj;
        }
        return(result);
    }
コード例 #10
0
    public T Get <T>(string name) where T : Component
    {
        this.DoInitIfDont();
        GUILink.UILink uILink = null;
        this.all_objs.TryGetValue(name, out uILink);
        T result;

        if (uILink == null)
        {
            Debug.Log(string.Format("[GUILink] Get<T> object {0} is not exist", name));
            result = default(T);
        }
        else
        {
            result = uILink.Get <T>();
        }
        return(result);
    }
コード例 #11
0
 private void DoInitIfDont()
 {
     if (!this.inited)
     {
         this.inited = true;
         if (this.Links != null)
         {
             for (int i = 0; i < this.Links.Count; i++)
             {
                 GUILink.UILink uILink = this.Links[i];
                 if (uILink != null && uILink.LinkObj)
                 {
                     this.all_objs[uILink.Name] = uILink;
                 }
             }
         }
     }
 }
コード例 #12
0
ファイル: GUILinkEditor.cs プロジェクト: unstephen/Q3
    private static void AddGameObjectToLink()
    {
        UnityEngine.GameObject select = Selection.activeGameObject;
        if (select == null)
        {
            return;
        }
        if (!select.activeInHierarchy)
        {
            Debug.LogError(string.Format("【GUILink】自动添加对象失败:请先激活需要添加的对象和GUILink对象", select.name), select);
            return;
        }

        GUILink link = FindInParents <GUILink>(select.transform);

        if (link == null)
        {
            Debug.LogError(string.Format("【GUILink】自动添加对象失败:{0}父节点无GUILink组件", select.name), select);
            return;
        }

        if (link.gameObject == select && select.transform.parent != null)
        {
            link = FindInParents <GUILink>(select.transform.parent);
        }
        if (link == null)
        {
            Debug.LogError(string.Format("【GUILink】自动添加对象失败:{0}父节点无GUILink组件", select.name), select);
            return;
        }
        link.ReBuildLinkMap();
        if (link.Get(select.name) == null)
        {
            GUILink.UILink item = new GUILink.UILink();
            item.Name    = select.name;
            item.LinkObj = select;
            link.Links.Add(item);
            Debug.Log(string.Format("【GUILink】自动添加对象成功:{0}  GUILink:{1}", select.name, link.name), link);
        }
        else
        {
            Debug.LogError(string.Format("【GUILink】自动添加对象失败:已经存在重复名字{0}的对象  GUILink:{1}", select.name, link.name), link);
        }
    }