Unity构建iOS包的详细步骤与教程

AssetBundle,一般称为ab包,是Unity提供的一种资源存储格式。近几个版本的Unity内置ab包的打包工具,在编辑器内可以很方便地进行模型,材质,音乐,动画等资源的打包,一个预制体被打包后,相关依赖项(组件内使用到的资源)也会合并在一起。但脚本不会被打包,预制体上只会保留一个指向脚本的路径。


AssetBundle

  • 0.优势
  • 1.打包
  • 2.上传
  • 3.下载与使用
  • 4.生命周期


0.优势

对于服务端,资源可以分布到多个ab包中,存储位置灵活,支持热更新。
对于客户端,可以根据游戏的进程随取随用,节约客户端的内存。

1.打包

流程参考b站上的 视频教学 在视频中,将资源打包为ab包的步骤很简单,首先,在Assets下选择一个准备打包的对象(非脚本),在编辑器中的Inspector面板底部的AssetBudle右选择New…新建包名,命名后为其选中。例如:

unity 出IOS包详细过程 unity build ios_加载

编写脚本,脚本代码如下:

登录后复制


using UnityEditor;

public class BuildAssetsBundle : Editor
{
    [MenuItem("Build/AssetsBundle")]
    static void BuildAllAssetsBundle()
    {
        BuildPipeline.BuildAssetBundles("./AssetsBundles/win64",BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);
    }
}

脚本定义了一个顶部菜单栏的新项“Build/AssetsBundle”,点击后调用函数 BuildAllAssetsBundle

其中,使用到了BuildPipeline类,该类主要用于以编程方式构建可从 Web 加载的Player或 AssetBundle,详见 文档

具体的打包使用的是BuildPipeline类下的BuildAssetBundle函数,详见 文档。在示例代码中传入了三个参数,分别代表打包出的ab包输出地址,ab包构建选项( 可选择),以及目标平台。

代码保存后,在菜单栏点击“Build/AssetsBundle”执行打包后,能看到输出文件夹中新增的ab包文件。

2.上传

在上传的步骤中,把ab包文件放到服务器上

unity 出IOS包详细过程 unity build ios_unity 出IOS包详细过程_02


若文件上传成功,在浏览器中输入文件路径访问后,结果是能下载得到ab包

3.下载与使用

官方教程中(4.3),列举了脚本中下载解析ab包的方法:

AssetBundle.LoadFromMemory,AssetBundle.LoadFromFile,AssetBundleDownloadHandler,WWW.LoadFromCacheOrDownload等。

unity 出IOS包详细过程 unity build ios_上传_03


代码;

登录后复制


using UnityEngine;

public class request : MonoBehaviour
{
    private void Start()
    {
        Http http = new();
        StartCoroutine(http.webRequest("192.168.5.127/remote/win64/gameui", (build)=>
        {
            GameObject gameObject = build.asset as GameObject;
            Instantiate(gameObject, transform.Find("Canvas"));
        }));
    }
}





登录后复制
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class Http
{
    public IEnumerator webRequest(string url, Action<AssetBundleRequest> action)
    {
        while (!Caching.ready)
            yield return null;
        using (UnityWebRequest uwr = UnityWebRequestAssetBundle.GetAssetBundle(url))
        {
            yield return uwr.SendWebRequest();
            if (uwr.isDone)
            {
                if (uwr.isNetworkError || uwr.isHttpError)
                {
                    Debug.LogError("资源:" + url + "加载失败");
                }
                else
                {
                    AssetBundle ab = DownloadHandlerAssetBundle.GetContent(uwr);
                    AssetBundleRequest tempAb = ab.LoadAllAssetsAsync(typeof(GameObject));
                    yield return tempAb;
                    if (tempAb != null)
                    {
                        if (action != null)
                            action(tempAb);
                        ab.Unload(false);
                    }
                    else
                    {
                        // 加载失败处理
                        Debug.LogError("资源:" + url + "加载失败");
                    }
                }
            }
            else
            {
                yield return new WaitForEndOfFrame();
            }
        }
    }
}

4.生命周期

unity 出IOS包详细过程 unity build ios_加载_04

               

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空