/// <summary> /// 销毁场景数据 /// </summary> void DestroyScene(bool clearUI = true) { DialogManager.Instance.Reset(); // 保存客户端需要保存的玩家信息 LocalPlayerManager.Instance.OnDestroyScene(); // 销毁所有场景不需要的数据 if (ActorManager.Instance != null) { ActorManager.Instance.OnDestroyScene(); } InterObjectManager.Instance.DestroyAllAndBoss(); Game.Instance.SetLocalPlayer(null); CullManager.GetInstance().Reset(); if (ObjCachePoolMgr.Instance != null) { ObjCachePoolMgr.Instance.OnDestroyScene(clearUI); } ObjInstHelp.GetInstance().ClearInstedObject(); }
/// <summary> /// 当特效文件加载完毕后,进行相应的实例化处理 /// </summary> void OnObjectLoaded(Object obj) { // 设置特效Object mEffectPrefab = obj; // 获取特效初始化回调函数列表,实例化特效Object for (int i = 0; i < mInitCallback.Count; ++i) { var callBack = mInitCallback[i]; var newEffect = ObjInstHelp.GetInstance().InstantiateReuse(mEffectPrefab, mInstMaxCount);// 限制最大可实例物体的数量 callBack(newEffect); } mInitCallback.Clear(); }
/// <summary> /// 实例化特效物体 /// </summary> public void CreateInstance(InitFunc callBack) { if (mIsDestroy) { return; } // 如果特效文件已经加载完成,则直接进行实例化 if (mEffectPrefab != null) { if (callBack != null) { var newEffect = ObjInstHelp.GetInstance().InstantiateReuse(mEffectPrefab, mInstMaxCount); callBack(newEffect); } } // 未加载完成则将初始化回调函数添加到列表中,等到加载完毕后再进行调用 else { mInitCallback.Add(callBack); } }