Esempio n. 1
0
    public UnityEngine.Object[] GetMultiResources(string bundleName, string resName)
    {
        //表示是否已经缓存了
        if (loadObj.ContainsKey(bundleName))
        {
            AssetResObj   tmpRes = loadObj[bundleName];
            List <Object> tmpObj = tmpRes.GetResObj(resName);
            if (tmpObj != null)
            {
                return(tmpObj.ToArray());
            }
        }

        //表示已经加载过bundle
        if (loadHelper.ContainsKey(bundleName))
        {
            IABRelationManager loader = loadHelper[bundleName];
            Object[]           tmpObj = loader.GetMultiResource(resName);

            //放入缓存
            AssetObj tmpAssetObj = new AssetObj(tmpObj);
            if (loadObj.ContainsKey(bundleName))
            {
                loadObj[bundleName].AddResObj(resName, tmpAssetObj);
            }
            else
            {
                AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                loadObj.Add(bundleName, tmpRes);
            }

            return(tmpObj);
        }
        return(null);
    }
Esempio n. 2
0
    void LoadObjectFromBundle(string bundleName, string resName, LoadObjectCallBack callback)
    {
        if (loadedHelper.ContainsKey(bundleName))
        {
            IABRelationManager relation = loadedHelper[bundleName];
            Object             tempObj  = relation.GetSingleResource(resName);

            //缓存 tempObj
            AssetObj assetObj = new AssetObj(tempObj);

            if (!loadObjs.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = new AssetResObj(resName, assetObj);
                loadObjs.Add(bundleName, tmpRes);
            }
            else
            {
                AssetResObj resObj = loadObjs[bundleName];
                resObj.AddResObj(resName, assetObj);
            }

            if (null != callback)
            {
                callback(tempObj);
            }
        }
        else
        {
            if (null != callback)
            {
                callback(null);
            }
        }
    }
Esempio n. 3
0
    public Object[] GetMultiRes(string bundleName, string resName)
    {
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            Object[] tmpObjs = loader.GetMultiRes(resName);

            AssetObj tmpAssetObj = new AssetObj(tmpObjs);

            // 缓存里面 是否已经有这个包
            if (mLoadObj.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = mLoadObj [bundleName];

                tmpRes.AddResObj(resName, tmpAssetObj);
            }
            else
            {
                // 没有加载过 这个包
                AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);

                mLoadObj.Add(bundleName, tmpRes);
            }

            return(tmpObjs);
        }
        else
        {
            return(null);
        }
    }
Esempio n. 4
0
 public void AddResObj(string name, AssetObj tmpObj)
 {
     if (!resObjs.ContainsKey(name))
     {
         resObjs.Add(name, tmpObj);
     }
 }
Esempio n. 5
0
 //表示已经加载过bundle
 public Object GetSingleResource(string bundleName, string resName)
 {
     if (loadObj.ContainsKey(bundleName))
     {
         AssetResObj   tmpRes = loadObj[bundleName];
         List <Object> tmpObj = tmpRes.GetResObj(resName);
         if (tmpObj != null)
         {
             return(tmpObj[0]);
         }
     }
     if (loadHelper.ContainsKey(bundleName))
     {
         IABRelationManager loader      = loadHelper[bundleName];
         Object             tmpObj      = loader.GetSingleResource(resName);
         AssetObj           tmpAssetObj = new AssetObj(tmpObj);
         //缓存里面是否已经有了这个包
         if (loadObj.ContainsKey(bundleName))
         {
             AssetResObj tmpRes = loadObj[bundleName];
             tmpRes.AddResObj(resName, tmpAssetObj);
         }
         else
         {
             //没有加载过这个包
             AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
             loadObj.Add(bundleName, tmpRes);
         }
         return(tmpObj);
     }
     else
     {
         return(null);
     }
 }
Esempio n. 6
0
 public UnityEngine.Object[] GetResources(string bundlePath, string resName)
 {
     //表示是否缓存了该物体
     if (mAssetObjsDict.ContainsKey(bundlePath))
     {
         AssetBundleObjs           abObjs = mAssetObjsDict[bundlePath];
         List <UnityEngine.Object> objs   = abObjs.GetResObj(resName);
         if (objs != null)
         {
             return(objs.ToArray());
         }
     }
     //表示已经加载过bundle
     if (mABRelationDict.ContainsKey(bundlePath))
     {
         IABRelationManager   iABRelation = mABRelationDict[bundlePath];
         UnityEngine.Object[] objs        = iABRelation.GetResources(resName);
         AssetObj             assetObj    = new AssetObj(objs);
         if (mAssetObjsDict.ContainsKey(bundlePath))
         {
             AssetBundleObjs assetBundleObjs = mAssetObjsDict[bundlePath];
             mAssetObjsDict.Add(bundlePath, assetBundleObjs);
         }
         else
         {
             AssetBundleObjs assetBundleObjs = new AssetBundleObjs(resName, assetObj);
             mAssetObjsDict.Add(bundlePath, assetBundleObjs);
         }
         return(objs);
     }
     return(null);
 }
Esempio n. 7
0
 public void AddResObj(string name, AssetObj _assetObj)
 {
     if (null != dicAssetObj && !dicAssetObj.ContainsKey(name))
     {
         dicAssetObj.Add(name, _assetObj);
     }
     Debug.Log("AddResObj Key = " + name);
 }
Esempio n. 8
0
 public AssetResObj(string name, AssetObj _assetObj)
 {
     if (null == dicAssetObj)
     {
         dicAssetObj = new Dictionary <string, AssetObj>();
     }
     dicAssetObj.Add(name, _assetObj);
     Debug.Log("AssetResObj Key = " + name);
 }
Esempio n. 9
0
    //释放所有
    public void ReleaseAllResObj(string name, AssetObj tmpObj)
    {
        List <string> keys = new List <string>();

        keys.AddRange(resObjs.Keys);

        for (int i = 0; i < keys.Count; i++)
        {
            ReleaseResObj(keys[i]);
        }
    }
Esempio n. 10
0
 public List <UnityEngine.Object> GetResObj(string name)
 {
     if (resObjs.ContainsKey(name))
     {
         AssetObj tmpObj = resObjs[name];
         return(tmpObj.objs);
     }
     else
     {
         return(null);
     }
 }
Esempio n. 11
0
 /// <summary>
 /// 释放单个资源
 /// </summary>
 /// <param name="name"></param>
 public void ReleaseResObj(string name)
 {
     if (mResObjDict.ContainsKey(name))
     {
         AssetObj assetObj = mResObjDict[name];
         assetObj.ReleaseObj();
     }
     else
     {
         Debug.Log("要释放的资源不存在" + name);
     }
 }
Esempio n. 12
0
 /// <summary>
 /// 释放单个资源
 /// </summary>
 /// <param name="name"></param>
 public void ReleaseResObj(string name)
 {
     if (resObjs.ContainsKey(name))
     {
         AssetObj tmpObj = resObjs[name];
         tmpObj.ReleaseObj();
     }
     else
     {
         Debug.Log("Release object name is not exit == " + name);
     }
 }
Esempio n. 13
0
 /// <summary>
 /// 释放单个资源
 /// </summary>
 /// <param name="name"></param>
 public void ReleaseResObj(string name)
 {
     if (dicAssetObj.ContainsKey(name))
     {
         AssetObj obj = dicAssetObj[name];
         obj.ReleaseObj();
         //dicAssetObj.Remove(name);
     }
     else
     {
         Debug.LogError("release obj name is not exit : " + name);
     }
 }
Esempio n. 14
0
 public List <Object> GetResObj(string name)
 {
     if (resObjs.ContainsKey(name))
     {
         AssetObj tmpObj = resObjs[name];
         return(tmpObj.objs);
     }
     else
     {
         Debug.Log("release object name is not exit==" + name);
         return(null);
     }
 }
Esempio n. 15
0
 public List <UnityEngine.Object> GetResObj(string name)
 {
     if (mResObjDict.ContainsKey(name))
     {
         AssetObj assetObj = mResObjDict[name];
         return(assetObj.mObjList);
     }
     else
     {
         Debug.Log("要获取的资源不存在" + name);
         return(null);
     }
 }
Esempio n. 16
0
        public IEnumerator GetResAsys(string bundleName, BundleInfo tmpInfo)
        {
            bool hasFind = false;

            ///缓存中已经加载了Object
            if (loadObj.ContainsKey(bundleName))
            {
                //Debug.Log("get  from memory =="+ resName);
                AssetResObj tmpRes = loadObj[bundleName];

                List <Object> tmpObj = tmpRes.GetResObj(tmpInfo.resName);
                if (tmpObj != null)
                {
                    tmpInfo.AddReses(tmpObj.ToArray());


                    tmpInfo.ReleaseObj();
                    hasFind = true;
                }
            } // 没有找到 继续向下


            if (!hasFind && loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = loadHelper[bundleName];

                yield return(loader.GetResAsys(tmpInfo)

                             );

                AssetObj tmpAssetObj = new AssetObj(tmpInfo.resObj);

                //是否已经包含bundle 
                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpRes = loadObj[bundleName];


                    tmpRes.AddResObj(tmpInfo.resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(tmpInfo.resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }


                tmpInfo.ReleaseObj();
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Gets the single resource.
        /// </summary>
        /// <returns>The single resource.</returns>
        /// <param name="bundleName">Bundle name. 相对路径</param>
        /// <param name="resName">Res name.</param>

        public Object GetSingleResource(string bundleName, string resName)
        {
            ///缓存中已经加载了Object
            if (loadObj.ContainsKey(bundleName))
            {
                //Debug.Log("get  from memory =="+ resName);
                AssetResObj tmpRes = loadObj[bundleName];

                List <Object> tmpObj = tmpRes.GetResObj(resName);
                if (tmpObj != null)
                {
                    return(tmpObj[0]);
                }
            }             // 没有找到 继续向下

            if (loadHelper.ContainsKey(bundleName))

            {
                //  Debug.Log("single  load manager =="+ bundleName);

                IABRelationManager loader = loadHelper[bundleName];

                Object   tmpObj      = loader.GetSingleResource(resName);
                AssetObj tmpAssetObj = new AssetObj(tmpObj);

                //是否已经包含bundle 
                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpRes = loadObj[bundleName];


                    tmpRes.AddResObj(resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }



                return(tmpObj);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 18
0
            public void ReleaseGameObject(string name)
            {
                if (resObjs.ContainsKey(name))
                {
                    AssetObj tmpObj = resObjs[name];


                    tmpObj.ReleaseGameObject();

                    resObjs.Remove(name);
                }
                else
                {
                    Debuger.Log("release Object name is not exist==" + name);
                }
            }
Esempio n. 19
0
        public Object[] GetMutiResources(string bundleName, string resName)
        {
            if (loadObj.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = loadObj[bundleName];

                List <Object> tmpObj = tmpRes.GetResObj(resName);
                if (tmpObj != null)
                {
                    return(tmpObj.ToArray());
                }
            }



            if (loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = loadHelper[bundleName];

                Object[] tmpObjs     = loader.GetAllResources(resName);
                AssetObj tmpAssetObj = new AssetObj(tmpObjs);


                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpRes = loadObj[bundleName];


                    tmpRes.AddResObj(resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }



                return(tmpObjs);
            }
            else
            {
                return(null);
            }
        }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField(m_propLocalToWorldPos, new GUIContent("根节点位置", "场景根节点在世界坐标系的位置"));
        EditorGUILayout.PropertyField(m_propLocalScenePrefabPos, new GUIContent("场景位置", "场景预制体在场景坐标系的位置"));
        EditorGUI.EndChangeCheck();

        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField(m_propScenePrefabPath, new GUIContent("场景预制体路径", "编辑时使用拷贝资源路径,复制粘贴路径"));
        if (EditorGUI.EndChangeCheck())
        {
            AssetObj asset = cs.AssetManager.Get().CreateAsset(m_propScenePrefabPath.stringValue);
        }

        serializedObject.ApplyModifiedProperties();
    }
Esempio n. 21
0
    /// <summary>
    /// 加载多个资源(一般用于切割多张的精灵图片)
    /// </summary>
    /// <param name="bundleName">包名</param>
    /// <param name="resName">资源名</param>
    /// <returns></returns>
    public Object[] GetMultiResources(string bundleName, string resName)
    {
        // 是否已经缓存了这个包
        if (loadObjs.ContainsKey(bundleName))
        {
            // 缓存包中有指定资源,直接返回
            AssetResObj   tmpRes  = loadObjs[bundleName];
            List <Object> tmpObjs = tmpRes.GetResObj(resName);

            if (tmpObjs != null)
            {
                return(tmpObjs.ToArray());
            }
        }

        // 是否已经加载过bundle
        if (loadHelper.ContainsKey(bundleName))
        {
            // 从包中加载出obj
            IABRelationManager loader      = loadHelper[bundleName];
            Object[]           tmpObjs     = loader.GetMultiResources(resName);
            AssetObj           tmpAssetObj = new AssetObj(tmpObjs);

            // 是否已经缓存了这个包
            if (loadObjs.ContainsKey(bundleName))
            {
                // 添加缓存资源
                AssetResObj tmpRes = loadObjs[bundleName];
                tmpRes.AddResObj(resName, tmpAssetObj);
            }
            else
            {
                // 添加缓存包和资源
                AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                loadObjs.Add(bundleName, tmpRes);
            }

            return(tmpObjs);
        }
        else
        {
            return(null);
        }
    }
Esempio n. 22
0
    public Object GetSingleRes(string bundleName, string resName)
    {
        // 表示 是否已经缓存了物体
        if (mLoadObj.ContainsKey(resName))
        {
            AssetResObj tmpRes = mLoadObj [bundleName];

            List <Object> tmpObj = tmpRes.GetResObj(resName);

            if (tmpObj != null)
            {
                return(tmpObj [0]);
            }
        }

        // 表示已经加载过bundle
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            Object tmpObj = loader.GetSingleRes(resName);

            AssetObj tmpAssetObj = new AssetObj(tmpObj);

            if (mLoadObj.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = mLoadObj [bundleName];
                tmpRes.AddResObj(resName, tmpAssetObj);
            }
            else
            {
                // 没有加载过 这个包
                AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                mLoadObj.Add(bundleName, tmpRes);
            }

            return(tmpObj);
        }
        else
        {
            return(null);
        }
    }
Esempio n. 23
0
    /// <summary>
    /// 获取单个资源
    /// </summary>
    /// <param name="bundleName"></param>
    /// <param name="resName"></param>
    /// <returns></returns>
    public UnityEngine.Object GetSingleResources(string bundleName, string resName)
    {
        if (loadObjDic.ContainsKey(bundleName))
        {
            AssetResObj tmpRes = loadObjDic[bundleName];
            List <UnityEngine.Object> tmpObj = tmpRes.GetResObj(resName);

            if (tmpObj != null)
            {
                return(tmpObj[0]);
            }
        }

        //表示已经加载过bundle
        if (loadHelperDic.ContainsKey(bundleName))
        {
            IABRelationManager loader = loadHelperDic[bundleName];
            UnityEngine.Object tmpObj = loader.GetSingleResources(resName);

            AssetObj tmpAssetObj = new AssetObj(tmpObj);

            if (loadObjDic.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = loadObjDic[bundleName];
                tmpRes.AddResObj(resName, tmpAssetObj);
            }
            else
            {
                //没有加载过这个包
                AssetResObj tmpRes = new AssetResObj(bundleName, tmpAssetObj);
                tmpRes.AddResObj(resName, tmpAssetObj);
                loadObjDic.Add(bundleName, tmpRes);
            }
            return(tmpObj);
        }
        else
        {
            Debug.LogError(resName + "load error");
            return(null);
        }
    }
    /// <summary>
    /// 获取这个AB包下的单个资源
    /// </summary>
    public UnityEngine.Object LoadAsset(string bundleName, string assetName)    // scene1/test.prefab
    {
        // 先看缓存的有没有
        if (resObj.ContainsKey(bundleName))
        {
            AssetResObj   tmpRes  = resObj[bundleName];
            List <Object> objList = tmpRes.GetResObj(assetName);
            if (objList != null)
            {
                return(objList[0]);
            }
        }

        // 缓存的没有,或者缓存里没有我们需要的Object, 就去底层加载一次
        if (!relationDic.ContainsKey(bundleName))
        {
            Debug.LogError("The loadHelper Not ContainsKey :" + bundleName);
            return(null);
        }

        AssetBundleRelation abRela = relationDic[bundleName];
        Object obj = abRela.LoadAsset(assetName);

        AssetObj tmpObj = new AssetObj(obj);

        if (resObj.ContainsKey(bundleName))         // 如果缓存里有这个bundle包,获取value,加到value里去;
        {
            AssetResObj tmpResObj = resObj[bundleName];
            tmpResObj.AddResObj(assetName, tmpObj);
        }
        else         // 缓存里没有这个 bundle包,直接加进去
        {
            AssetResObj assetRes = new AssetResObj(assetName, tmpObj);
            resObj.Add(bundleName, assetRes);
        }

        return(obj);
    }
    /// <summary>
    /// 获取这个AB包下的多个资源
    /// </summary>
    public Object[] LoadAssetWithSubAssets(string bundleName, string assetName)
    {
        if (resObj.ContainsKey(bundleName))
        {
            AssetResObj   tmpRes  = resObj[bundleName];
            List <Object> objList = tmpRes.GetResObj(assetName);
            if (objList != null)
            {
                return(objList.ToArray());
            }
        }

        if (!relationDic.ContainsKey(bundleName))
        {
            Debug.LogError("The loadHelper Not ContainsKey :" + bundleName);
            return(null);
        }

        AssetBundleRelation abRela = relationDic[bundleName];

        Object[] tmpObjs = abRela.LoadAssetWithSubAssets(assetName);

        AssetObj assetObj = new AssetObj(tmpObjs);

        if (resObj.ContainsKey(bundleName))
        {
            AssetResObj tmpAsset = resObj[bundleName];
            tmpAsset.AddResObj(assetName, assetObj);
        }
        else
        {
            AssetResObj assetRes = new AssetResObj(assetName, assetObj);
            resObj.Add(bundleName, assetRes);
        }


        return(tmpObjs);
    }
Esempio n. 26
0
	public AssetResObj(string name,AssetObj tmp)
	{
		resObjs = new Dictionary<string,AssetObj> ();

		resObjs.Add (name, tmp);
	}
Esempio n. 27
0
	public void AddResObj(string name,AssetObj tmpObj)
	{
		resObjs.Add (name, tmpObj);
	}
Esempio n. 28
0
	public Object[] GetMultiRes(string bundleName,string resName)
	{
		if (mLoadHelper.ContainsKey (bundleName)) {
			IABRelationMgr loader = mLoadHelper [bundleName];

			Object[] tmpObjs = loader.GetMultiRes (resName);

			AssetObj tmpAssetObj = new AssetObj (tmpObjs);

			// 缓存里面 是否已经有这个包
			if (mLoadObj.ContainsKey (bundleName)) {
				AssetResObj tmpRes = mLoadObj [bundleName];

				tmpRes.AddResObj (resName, tmpAssetObj);
			} else {
				// 没有加载过 这个包
				AssetResObj tmpRes = new AssetResObj (resName, tmpAssetObj);

				mLoadObj.Add (bundleName, tmpRes);
			}

			return tmpObjs;
		} else {
			return null;
		}
	}
Esempio n. 29
0
    public AssetResObj(string name, AssetObj tmp)
    {
        resObjs = new Dictionary <string, AssetObj>();

        resObjs.Add(name, tmp);
    }
Esempio n. 30
0
 public Object GetSingleResources(string bundleName, AssetObj tmpObj)
 {
     return(null);
 }
 /// <summary>
 /// 添加 资源名 --> 资源名对应的Object
 /// </summary>
 public void AddResObj(string assetName, AssetObj obj)
 {
     assetDic.Add(assetName, obj);
 }
Esempio n. 32
0
	public Object GetSingleRes(string bundleName,string resName)
	{
		// 表示 是否已经缓存了物体
		if (mLoadObj.ContainsKey (resName)) {
			AssetResObj tmpRes = mLoadObj [bundleName];

			List<Object> tmpObj = tmpRes.GetResObj (resName);

			if (tmpObj != null) {
				return tmpObj [0];
			}
		} 

		// 表示已经加载过bundle
		if (mLoadHelper.ContainsKey (bundleName)) {
			IABRelationMgr loader = mLoadHelper [bundleName];

			Object tmpObj = loader.GetSingleRes (resName);

			AssetObj tmpAssetObj = new AssetObj (tmpObj);

			if (mLoadObj.ContainsKey (bundleName)) {
				AssetResObj tmpRes = mLoadObj [bundleName];
				tmpRes.AddResObj (resName, tmpAssetObj);
			} else {
				// 没有加载过 这个包
				AssetResObj tmpRes = new AssetResObj (resName, tmpAssetObj);
				mLoadObj.Add (bundleName, tmpRes);
			}

			return tmpObj;
		} else {
			return null;
		}
	}
Esempio n. 33
0
 public void AddResObj(string name, AssetObj tmpObj)
 {
     resObjs.Add(name, tmpObj);
 }
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="assetName">资源名</param>
    /// <param name="obj">资源名对应的Obejct</param>
    public AssetResObj(string assetName, AssetObj obj)
    {
        assetDic = new Dictionary <string, AssetObj>();

        assetDic.Add(assetName, obj);
    }