/// <summary> /// 更新holder下的对象显示 /// </summary> /// <param name="varOriObjInfo"></param> public void AddToHolder(OriginalObjInfo varOriObjInfo) { if (varOriObjInfo == null || varOriObjInfo.mObj == null || varOriObjInfo.mHolder == null) { return; } Type type = varOriObjInfo.mObj.GetType(); if (type == typeof(TextAsset)) { varOriObjInfo.mHolder.SetParent(mTextAssetHolder); } else if (type == typeof(GameObject)) { varOriObjInfo.mHolder.SetParent(mGameObjectHolder); } else if (type == typeof(Texture) || type == typeof(Texture2D) || type == typeof(Texture3D)) { varOriObjInfo.mHolder.SetParent(mTextureHolder); } else if (type == typeof(AudioClip)) { varOriObjInfo.mHolder.SetParent(mAudioClipHolder); } else if (type == typeof(AnimationClip)) { } else if (type == typeof(Material)) { varOriObjInfo.mHolder.SetParent(mMaterialHolder); } }
/// <summary> /// 从对象池中移除一个对象 /// </summary> /// <param name="varOriObjInfo"></param> public void RemoveOriginalObjInfo(OriginalObjInfo varOriObjInfo) { if (varOriObjInfo == null) { return; } if (mPoolObjs == null || mPoolObjs.Count == 0) { return; } mPoolObjs.Remove(varOriObjInfo.mFilePath); }
private void OnLoadCallbackPreviosVersion(UnityEngine.Object varObj, ResourceLoadParam varParam) { GameObjPool.GetSingleton().RemoveTaskQueue(this); if (varObj == null) { if (varParam != null) { Helper.LogError("LoadTask OnLoadCallback:Error caused by null UnityEngine.Object instance,type: " + mType.ToString() + ",path: " + mFilePath); } else { Helper.LogError("LoadTask OnLoadCallback:Error caused by null UnityEngine.Object instance,type: " + mType.ToString() + ",path: " + mFilePath); } if (mLoadTasks != null && mLoadTasks.Count > 0) { for (int i = 0; i < mLoadTasks.Count; i++) { LoadTask task = mLoadTasks[i]; if (task != null) { task.Callback(null); } } } mLoadTasks.Clear(); return; } OriginalObjInfo info = null; if (mType == typeof(Texture) || mType == typeof(Texture2D) || mType == typeof(Texture3D)) { info = new OriginalObjInfo(varObj, mFilePath); } else { info = new OriginalObjInfo(UnityEngine.Object.Instantiate(varObj), mFilePath); } info.pObjFlag = pObjFlag; GameObjPool.GetSingleton().AddOriginalObjInfo(info); if (mLoadTasks != null && mLoadTasks.Count > 0) { for (int i = 0; i < mLoadTasks.Count; i++) { LoadTask task = mLoadTasks[i]; if (task != null) { task.Callback(info.GetCacheObj(task.mObjFlag)); } } } }
/// <summary> /// 将加载好的对象加入对象池中 /// </summary> /// <param name="varInfo"></param> /// <returns></returns> public bool AddOriginalObjInfo(OriginalObjInfo varInfo) { if (varInfo == null || string.IsNullOrEmpty(varInfo.mFilePath)) { return(false); } OriginalObjInfo info = null; if (mPoolObjs.TryGetValue(varInfo.mFilePath, out info)) { return(false); } mPoolObjs.Add(varInfo.mFilePath, varInfo); return(true); }
/// <summary> /// 获取对象池中的某一缓存对象,varIsUseOriObj:是否获取源对象 /// </summary> /// <param name="varFilePath"></param> /// <returns></returns> public CacheObjInfo GetCacheObjInfo(string varFilePath, ObjFlag varResult) { if (string.IsNullOrEmpty(varFilePath)) { Helper.LogError("GameObjPool GetCacheObjInfo: Error caused by null varFilePath"); return(null); } OriginalObjInfo oriInfo = GetOriginalObjInfo(varFilePath); if (oriInfo == null) { Helper.LogError("GameObjPool GetCacheObjInfo: Error caused by null OriginalObjInfo insatance,filePath: " + varFilePath); return(null); } return(oriInfo.GetCacheObj(varResult)); }
/// <summary> /// 获取对象池中的某一源对象 /// </summary> /// <param name="varFilePath"></param> /// <returns></returns> public OriginalObjInfo GetOriginalObjInfo(string varFilePath) { if (string.IsNullOrEmpty(varFilePath)) { Helper.LogError("GameObjPool GetOriginalObjInfo: Error caused by null varFilePath"); return(null); } if (mPoolObjs == null || mPoolObjs.Count == 0) { Helper.LogError("GameObjPool GetOriginalObjInfo: Error caused by null mPoolObjs || mPoolObjs.Count = 0"); return(null); } OriginalObjInfo info = null; mPoolObjs.TryGetValue(varFilePath, out info); return(info); }
/// <summary> /// 对象池中是否存在某个对象的缓存 /// </summary> /// <param name="varFilePath"></param> /// <returns></returns> public bool IsExistObjInfo(string varFilePath) { if (string.IsNullOrEmpty(varFilePath)) { return(false); } if (mPoolObjs == null || mPoolObjs.Count == 0) { return(false); } OriginalObjInfo info = null; if (mPoolObjs.TryGetValue(varFilePath, out info)) { return(true); } return(false); }
public CacheObjInfo(UnityEngine.Object varObj, OriginalObjInfo varOriginalObjInfo) { bLock = false; mObj = varObj; mOriginalObjInfo = varOriginalObjInfo; if (varObj != null && mOriginalObjInfo != null) { if (varObj.GetType() == typeof(GameObject)) { GameObject tmpObj = varObj as GameObject; if (tmpObj == null) { return; } mHolder = tmpObj.transform; mHolder.name = "[Lock: " + bLock + "] HashCode: " + mObj.GetHashCode() + " (" + Helper.GetFileNameFromFullPath(mOriginalObjInfo.mFilePath) + ")"; } else { mHolder = new GameObject("[Lock: " + bLock + "] HashCode: " + mObj.GetHashCode() + " (" + Helper.GetFileNameFromFullPath(mOriginalObjInfo.mFilePath) + ")").transform; } } varOriginalObjInfo.AddToHolder(this); }