Exemplo n.º 1
0
    internal bool RecycleObject(UnityEngine.Object obj)
    {
        bool ret = false;

        if (null != obj)
        {
            UnityEngine.GameObject gameObject = obj as UnityEngine.GameObject;
            if (null != gameObject)
            {
                //LogicSystem.LogicLog("RecycleObject {0} {1}", gameObject.name, gameObject.tag);
            }

            int objId = obj.GetInstanceID();
            if (kUsedResources.Contains(objId))
            {
                GameObjectPool resInfo = kUsedResources[objId];
                if (null != resInfo)
                {
                    FinalizeObject(resInfo.kObject);
                    RemoveFromUsedResources(objId);
                    AddToUnusedResources(resInfo.kRes, obj);
                    resInfo.Recycle();
                    if (kDestoryResources.ContainsKey(objId))
                    {
                        kDestoryResources[objId] = resInfo;
                    }
                    else
                    {
                        kDestoryResources.Add(objId, resInfo);
                    }
                    ret = true;
                }
            }
        }
        return(ret);
    }