Пример #1
0
 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); }
     }
 }
Пример #2
0
 public void LoadModel()
 {
     effectAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab");
     effectObj   = effectAsset.GameObjectAsset;
     InitSortingLayer(effectObj, "Effect");
     InitCom();
 }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
    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();
    }
Пример #5
0
 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);
    }
Пример #8
0
 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");
 }
Пример #9
0
    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();
    }
Пример #10
0
    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);
    }
Пример #11
0
        /// <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));
            }
        }
Пример #12
0
        /// <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);
        }
Пример #13
0
 //release the refrence of the task to recycle the task...
 void OnTaskComplete(ILoadAsset asset)
 {
     m_Task   = null;
     m_IsDone = true;
 }