查看: 749|回复: 0
打印 上一主题 下一主题

[其他] AssetsBundle iOS相关操作

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-12-19 06:43:15 |只看该作者 |倒序浏览

制作
        public static void CreateAssetBunldes()
        {
                Object[]  SelectedAsset= Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
       
                         foreach (Object obj in SelectedAsset)
                         {
                             string sourcePath = AssetDatabase.GetAssetPath(obj);                       
                             string targetPath = Application.dataPath + "/StreamingAssets/" + obj.name + ".assetbundle";
                             if (File.Exists(targetPath)) File.Delete(targetPath);
                             if (BuildPipeline.BuildAssetBundle(obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies, BuildTarget.iPhone))
                             {
                                 Debug.Log(obj.name + "资源打包成功");
                             }
                             else
                             {
                                 Debug.Log(obj.name + "资源打包失败");
                             }
                         }
        }
//访问 拷贝 加载
       public GameObject mainui;
       public GameObject uiroot;
    void Start()
    {
              string dataPath = Application.streamingAssetsPath;
              string path =  dataPath + "/"+ "MainUi.assetbundle";
              Debug.Log ("path ---" + path);
              if (File.Exists (path)) {
                      dataPath = Application.persistentDataPath;
                     string PathURL =  dataPath + "/Raw";
                     if (!Directory.Exists (PathURL))
                            Directory.CreateDirectory(PathURL);
                     PathURL += "/MainUi.assetbundle";
                     Debug.Log ("PathURL ---" + path);
                     if(!File.Exists(PathURL))
                            File.Create(PathURL);
                     File.Copy(path, PathURL,true);
                     Debug.Log ("move ok......");
              }  else {
                     Debug.Log("file not exits....");
              }
              //
    }
    void Update()
    {
    }
       void OnGUI()
       {
              if (GUI.Button (new Rect (10, 10, 100, 100), "open ui")) {
                     Destroy(mainui);
              //     mainui = Instantiate(Resources.Load("MainUi")) as GameObject;
//                   if(mainui != null && uiroot != null)
//                   {
//                          mainui.transform.parent = uiroot.transform;
//                          mainui.transform.localPosition = Vector3.zero;
//                          mainui.transform.localScale = Vector3.one;
//                   }
                     StartCoroutine(DownloadAssetAndScene());
              }
              if (GUI.Button (new Rect (10, 110, 100, 100), "close ui")) {
                     if(mainui !=null)
                     {
                            Destroy(mainui);
                     }
              }
       }
      
       IEnumerator DownloadAssetAndScene()
       {
              //下载assetbundle,加载Cube
       //     string Path = Application.streamingAssetsPath + "/MainUi.assetbundle";
              //不同平台下StreamingAssets的路径是不同的,这里需要注意一下。
//         string PathURL =
//                   #if UNITY_ANDROID
//                   "jar:file://" + Application.dataPath + "!/assets/MainUi.assetbundle";
//            #elif UNITY_IPHONE
//            Application.persistentDataPath + "/StreamingAssets/MainUi.assetbundle";
//            #elif UNITY_STANDALONE_WIN || UNITY_EDITOR
//            "file://" + Application.dataPath + "/StreamingAssets/MainUi.assetbundle";
//            #else
//            string.Empty;
//            #endif
              string dataPath = Application.persistentDataPath;
              string PathURL = @"file://" + dataPath + "/Raw/"+ "MainUi.assetbundle";
              Debug.Log ("path ==" + PathURL);
              using (WWW asset = new WWW(PathURL))
              {
                  yield return asset;
                     if(string.IsNullOrEmpty(asset.error))
                     {
                            AssetBundle bundle = asset.assetBundle;
                            mainui =       Instantiate(bundle.Load("MainUi")) as GameObject;
                            if(mainui != null && uiroot != null)
                            {
                                   mainui.transform.parent = uiroot.transform;
                                   mainui.transform.localPosition = Vector3.zero;
                                   mainui.transform.localScale = Vector3.one;
                            }
                            bundle.Unload(false);
                     }else
                     {
                            Debug.Log(asset.error);
                     }
            
               
              }
            
       }

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-16 03:49 , Processed in 1.262940 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部