Ejemplo n.º 1
0
        //回收时解除消息绑定,及两者间关联
        public virtual void ReturnObject(LoopScrollRect scrollRect, Transform trans)
        {
            var insID = scrollRect.GetInstanceID();

            try
            {
                ScrollElementDict[insID][trans].UnRegisterEvent();
                ScrollElementDict[insID][trans].Dispose();
                ScrollElementDict[insID][trans] = null;
                ScrollElementDict[insID].Remove(trans);
            }
            catch (System.Exception)
            {
                throw new System.Exception($"{scrollRect.name}不存在于事件列表: {trans.name}");
            }
            SpawnManager.Instance.DespawnObject(trans);
        }
Ejemplo n.º 2
0
        //Loop Rect创建新对象的同时,均会与新子对象建立消息侦听,避免使用SendMessage
        public virtual GameObject GetObject(LoopScrollRect scrollRect)
        {
            var go    = SpawnManager.Instance.SpwanObject(prefabName);
            var insID = scrollRect.GetInstanceID();
            var trans = go.transform;

            go.transform.localScale = Vector3.one;
            if (!ScrollElementDict.ContainsKey(insID))
            {
                ScrollElementDict.Add(insID, new Dictionary <Transform, BaseScrollElement>());
            }
            if (ScrollElementDict[insID].ContainsKey(trans))
            {
                ScrollElementDict[insID][trans].UnRegisterEvent();
                ScrollElementDict[insID][trans].Dispose();
                ScrollElementDict[insID][trans] = null;
                ScrollElementDict[insID].Remove(trans);
            }
            ScrollElementDict[insID][trans] = ExecuteTypeScript();
            ScrollElementDict[insID][trans].RegisterEvent(scrollRect, trans);
            ScrollElementDict[insID][trans].Init();

            return(go);
        }
Ejemplo n.º 3
0
 public override void ProvideData(LoopScrollRect sr, int idx)
 {
     MsgManager.Instance.Broadcast(InternalEvent.UI_SCROLL_ELEMENT, new MsgArgs(sr.GetInstanceID(), idx));
 }