public void UnLoadGameObject(ILoadAsset _assetNode) { if (_assetNode != null) { Object obj = _assetNode.ObjectAsset as Object; // if (obj) // { // if (m_ScenePool.IsSpawned(obj.transform)) // { // m_ScenePool.Despawn(obj.transform); // } // else // { // Destroy(obj); // } // _assetNode.AssetObject = null; // } // else if (obj) { // LogSystem.Log("----------Destroy: " + _assetNode.AssetObject); Destroy(obj); } //if (_assetNode.isInstance) { GameObject.Destroy(_assetNode.AssetObject as GameObject); } } }
public void LoadModel() { effectAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab"); effectObj = effectAsset.GameObjectAsset; InitSortingLayer(effectObj, "Effect"); InitCom(); }
/// <summary> /// 异步加载场景 /// </summary> /// <param name="levelName">场景名称</param> /// <param name="isAdditive">是否叠加</param> /// <param name="funcAfter">完成回调</param> /// <returns></returns> private IEnumerator LoadLevelAsync(string levelName, bool isAdditive, Action <ILoadAsset> funcAfter = null) { // LogSystem.Log("Start to load scene " + levelName + " at frame " + Time.frameCount); ILoadAsset _Node = new ILoadAsset(); PrefabPathMap ppm = CheckPrefabBundle(levelName, true); if (ppm.IsHasBundle) { AssetBundleLoadOperation request = AssetBundleManager.LoadLevelAsync(ppm.BundleName, levelName, isAdditive); yield return(StartCoroutine(request)); AddBundleToUnloadList(ppm.BundleName, false); } else { AsyncOperation operation = SceneManager.LoadSceneAsync(levelName, isAdditive ? LoadSceneMode.Additive : LoadSceneMode.Single); yield return(operation); } GC.Collect(); // LogSystem.Log("Finish loading scene " + levelName + " at frame " + Time.frameCount); if (funcAfter != null) { funcAfter(_Node); } }
public void LoadModel() { Animate effectAnim; //SpriteImage sprite; effectAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab"); effectObj = effectAsset.GameObjectAsset; //if (effectObj.GetComponent<SpriteImage>() != null) //{ // sprite = effectObj.GetComponent<SpriteImage>(); //} //else //{ // sprite = effectObj.AddComponent<SpriteImage>(); //} //sprite.OnInit("knight_3.png"); if (effectObj.GetComponent <Animate>() != null) { effectAnim = effectObj.GetComponent <Animate>(); } else { effectAnim = effectObj.AddComponent <Animate>(); } effectAnim.OnInit(AnimationCache.getInstance().getAnimation(effectInfo.effectName)); effectAnim.startAnimation(); }
public void UnLoadLevel(ILoadAsset _assetNode) { // if (StaticDataBundle) // { // StaticDataBundle.Unload(true); // StaticDataBundle = null; // } Resources.UnloadUnusedAssets(); }
void Start() { MogoFileSystem.Instance.Init(); loadAsset = gameObject.AddComponent <LoadAssetBundlesMainAsset>(); ResourceManager.LoadMetaOfMeta(() => { Debug.Log("Init META Success"); }, null); //LoadInstance("ArenaUI.prefab", null); //LoadInstance("MogoUI.prefab", null); }
void Start() { MogoFileSystem.Instance.Init(); loadAsset = gameObject.AddComponent<LoadAssetBundlesMainAsset>(); ResourceManager.LoadMetaOfMeta(() => { Debug.Log("Init META Success"); }, null); //LoadInstance("ArenaUI.prefab", null); //LoadInstance("MogoUI.prefab", null); }
public void LoadModel() { charAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab"); charObj = charAsset.GameObjectAsset; if (charObj.GetComponent <Animate>() != null) { charAnim = charObj.GetComponent <Animate>(); } else { charAnim = charObj.AddComponent <Animate>(); } charAnim.OnInit(AnimationCache.getInstance().getAnimation(charInfo.charName)); charAnim.startAnimation("idle"); }
public void LoadModel() { Animate bulletAnim; //SpriteImage sprite; bulletAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab"); bulletObj = bulletAsset.GameObjectAsset; if (bulletObj.GetComponent <Animate>() != null) { bulletAnim = bulletObj.GetComponent <Animate>(); } else { bulletAnim = bulletObj.AddComponent <Animate>(); } Debug.Log(bulletInfo.bulletName); bulletAnim.OnInit(AnimationCache.getInstance().getAnimation(bulletInfo.bulletName)); bulletAnim.startAnimation(); }
public void OpenUI(UIDefine panelId, params object[] param) { if (_panels.ContainsKey(panelId)) { Debug.Log("already open panelId:" + panelId); return; } UIData data = UIDataSetting.Instance.UIPrefabs[panelId]; if (data == null) { Debug.Log("not find panelId:" + panelId); return; } ILoadAsset asset = GameLoader.Instance.LoadAssetSync(data.path); if (asset.GameObjectAsset == null) { Debug.Log("not load path:" + data.path); return; } GameObject node = asset.GameObjectAsset; UIComponent ui = node.AddComponent(data.className) as UIComponent; if (ui == null) { Debug.Log("not instantiate class:" + data.className.Name); return; } _panels.Add(panelId, node); node.transform.parent = UIRoot.transform; node.transform.localPosition = new Vector3(0, 0, 0); ui.panelId = panelId; ui.m_LoadAsset = asset; ui.OnInit(param); }
/// <summary> /// 异步加载资源 /// </summary> /// <param name="assetPath">资源路径</param> /// <param name="funcAfter">加载回调</param> /// <returns></returns> private void LoadAsync(string assetPath, Action <ILoadAsset> funcAfter) { // LogSystem.Log("Start to load " + assetPath + " at frame " + Time.frameCount); // 如果有正在加载中的,则把回调扔进去. if (!m_SameAssetDict.ContainsKey(assetPath)) { m_SameAssetDict.Add(assetPath, new SameAssetInfo()); } if (m_SameAssetDict[assetPath].CallbackAction != null && m_SameAssetDict[assetPath].CallbackAction.GetInvocationList().Length > 0) { m_SameAssetDict[assetPath].CallbackAction += funcAfter; return; } m_SameAssetDict[assetPath].CallbackAction = funcAfter; CheckScenePool(); int indexOf = assetPath.LastIndexOf("."); if (indexOf < 0) { LogSystem.Debug("LoadAsync Failed ---->>>> " + assetPath); return; } string extName = assetPath.Substring(indexOf).ToLower(); Object uObj; Action <Object> asyncRetAction = obj => { ILoadAsset _Node = new ILoadAsset(); _Node.ObjectAsset = obj; int count = m_SameAssetDict[assetPath].CallbackAction.GetInvocationList().Length; if (m_SameAssetDict[assetPath].CallbackAction != null) { if (extName.Equals(".prefab") && count > 1) { Delegate[] events = m_SameAssetDict[assetPath].CallbackAction.GetInvocationList(); ((Action <ILoadAsset>)events[0])(_Node); for (int i = 1; i < count; i++) { Object _uObj = m_ScenePool.Spawn(assetPath).gameObject; ILoadAsset _Node1 = new ILoadAsset(); _Node1.ObjectAsset = _uObj; ((Action <ILoadAsset>)events[i])(_Node1); } } else { m_SameAssetDict[assetPath].CallbackAction(_Node); } m_SameAssetDict[assetPath].CallbackAction = null; } }; if (extName.Equals(".prefab")) { if (m_ScenePool.prefabs.ContainsKey(assetPath)) { uObj = m_ScenePool.Spawn(assetPath).gameObject; asyncRetAction(uObj); } else if (m_GlobalPool.prefabs.ContainsKey(assetPath)) { uObj = m_GlobalPool.Spawn(assetPath).gameObject; asyncRetAction(uObj); } else { // LogSystem.Debug("LoadAsync: " + assetPath); StartCoroutine(Inner_LoadGameObjectAsync(assetPath, m_ScenePool, asyncRetAction)); } } else if (extName.Equals(".controller")) { if (m_SceneAnimPool.controllers.ContainsKey(assetPath)) { uObj = m_SceneAnimPool.controllers[assetPath]; asyncRetAction(uObj); } else { StartCoroutine(Inner_LoadObjectAsync(assetPath, typeof(RuntimeAnimatorController), asyncRetAction)); } } else if (extName.Equals(".exr")) { StartCoroutine(Inner_LoadObjectAsync(assetPath, typeof(Texture2D), asyncRetAction)); } else if (extName.Equals(".mat")) { StartCoroutine(Inner_LoadObjectAsync(assetPath, typeof(Material), asyncRetAction)); } else if (assetPath.StartsWith("Data/")) { uObj = LoadTextSync(assetPath); asyncRetAction(uObj); } else if (extName.Equals(".bytes")) { StartCoroutine(Inner_LoadObjectAsync(assetPath, typeof(TextAsset), asyncRetAction)); } }
/// <summary> /// 同步加载资源 /// </summary> /// <param name="assetPath">路径</param> /// <returns></returns> public ILoadAsset LoadAssetSync(string assetPath) { CheckScenePool(); int indexOf = assetPath.LastIndexOf("."); if (indexOf < 0) { return(new ILoadAsset()); } string extName = assetPath.Substring(assetPath.LastIndexOf(".")).ToLower(); Object uObj = null; ILoadAsset _Node = new ILoadAsset(); if (extName.Equals(".prefab")) { if (m_ScenePool.prefabs.ContainsKey(assetPath)) { uObj = m_ScenePool.Spawn(assetPath).gameObject; } else if (m_GlobalPool.prefabs.ContainsKey(assetPath)) { uObj = m_GlobalPool.Spawn(assetPath).gameObject; } else { uObj = Inner_LoadGameObjectSync(assetPath, m_ScenePool); } } else if (extName.Equals(".controller")) { if (m_SceneAnimPool.controllers.ContainsKey(assetPath)) { uObj = m_SceneAnimPool.controllers[assetPath]; } else { uObj = Inner_LoadObjectSync(assetPath, typeof(RuntimeAnimatorController)); } } else if (extName.Equals(".exr") || extName.Equals(".png") || extName.Equals(".BMP") || extName.Equals(".bmp")) { uObj = Inner_LoadObjectSync(assetPath, typeof(Texture2D)); } else if (extName.Equals(".mat")) { uObj = Inner_LoadObjectSync(assetPath, typeof(Material)); } else if (extName.Equals(".lua") || extName.Equals(".luac")) { uObj = LoadTextSync(assetPath); } else if (assetPath.StartsWith("Data/")) { uObj = LoadTextSync(assetPath); } else if (extName.Equals(".bytes")) { uObj = Inner_LoadObjectSync(assetPath, typeof(TextAsset)); } _Node.ObjectAsset = uObj; return(_Node); }
//release the refrence of the task to recycle the task... void OnTaskComplete(ILoadAsset asset) { m_Task = null; m_IsDone = true; }