Unity生成AB包和加载AB包
unity生成AB包
生产AB包,编辑器脚本放在Editor文件夹下(切记)
如果你是PC包 BuildTarget.WebGL 后面要改成PC (BuildTarget.StandaloneWindows64)
using UnityEngine; using UnityEditor; using System.IO; public class BuildAssetBundle : MonoBehaviour { [MenuItem("Tools/打AB包")] public static void BuildAB() { string dir = Application.streamingAssetsPath; //定义AB包路径:工程目录下的StreamingAssets if (Directory.Exists(dir) == false)//如果不存在文件夹,那么新建一个 { Directory.CreateDirectory(dir); } BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.WebGL); AssetDatabase.Refresh(); Debug.LogError("打包完成"); } }
1.先把你需要的对象变成预制体,选中预制体,给预制体添加AssetBundle(如下图)
2.设置完成点击Tools/打AB包 等待即可
完成之后文件夹会出现 如下图文件
3.然后把第一个文件复制到自己的服务器即可
加载AB包
1.两种方式脚本如下
using System.Collections; using UnityEngine; using UnityEngine.Networking; public class Load_AB : MonoBehaviour { private void Start() { StartCoroutine(LoadWWW()); StartCoroutine(FromWebRequest()); } private IEnumerator FromWebRequest() { string path = @"http://192.168.1.80:8088/unity/model.ab"; UnityWebRequest webRequest = UnityWebRequestAssetBundle.GetAssetBundle(path); yield return webRequest.SendWebRequest(); AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(webRequest); //object obj = assetBundle.LoadAsset("Image"); //Instantiate((GameObject)obj, FindObjectOfType<Canvas>().transform); object[] objects = assetBundle.LoadAllAssets(); foreach (var item in objects) { Instantiate((GameObject)item, FindObjectOfType<Canvas>().transform); } yield return null; } private WWW Loadab; private IEnumerator LoadWWW() { Loadab = new WWW("http://192.168.1.80:8088/unity/model.ab"); // 路径可以根据自己需求来修改 yield return Loadab; if (Loadab.error != null) { Debug.Log(Loadab.error); } else { object[] objects = Loadab.assetBundle.LoadAllAssets(); foreach (var item in objects) { Instantiate((GameObject)item, FindObjectOfType<Canvas>().transform); } } } }
如果没有服务器可以配置一个本地服务器 (iis管理器)
本地搜索iis打开如下图
右键网站
点击添加网站
网站名称:随便起
物理路径:找一个自己的文件夹方便找
IP地址:一般都是本机Ip
端口:设置其他即可(80没有占用的情况下可以不用改)
双击MIME类型(右键添加新类型)
因为是AB包所以添加后缀 .ab 类型是:application/octet-stream
这个添加完后找到你刚刚设置的文件夹地址里面有一个web.config文件,编辑此文件
编辑好的图如下图
需要添加的类型代码如下 上面的.ab类型也可以在这里加
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <staticContent> <remove fileExtension=".mem" /> <remove fileExtension=".data" /> <remove fileExtension=".unity3d" /> <remove fileExtension=".jsbr" /> <remove fileExtension=".membr" /> <remove fileExtension=".databr" /> <remove fileExtension=".unity3dbr" /> <remove fileExtension=".jsgz" /> <remove fileExtension=".memgz" /> <remove fileExtension=".datagz" /> <remove fileExtension=".unity3dgz" /> <remove fileExtension=".json" /> <remove fileExtension=".unityweb" /> <mimeMap fileExtension=".mem" mimeType="application/octet-stream" /> <mimeMap fileExtension=".data" mimeType="application/octet-stream" /> <mimeMap fileExtension=".unity3d" mimeType="application/octet-stream" /> <mimeMap fileExtension=".jsbr" mimeType="application/octet-stream" /> <mimeMap fileExtension=".membr" mimeType="application/octet-stream" /> <mimeMap fileExtension=".databr" mimeType="application/octet-stream" /> <mimeMap fileExtension=".unity3dbr" mimeType="application/octet-stream" /> <mimeMap fileExtension=".jsgz" mimeType="application/x-javascript; charset=UTF-8" /> <mimeMap fileExtension=".memgz" mimeType="application/octet-stream" /> <mimeMap fileExtension=".datagz" mimeType="application/octet-stream" /> <mimeMap fileExtension=".unity3dgz" mimeType="application/octet-stream" /> <mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" /> <mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" /> <mimeMap fileExtension=".ab" mimeType="application/octet-stream" /> </staticContent> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
2.如果你发布的是WebGl加载AB包模型出现丢失材质的情况
需要在编辑器里加入你模型需要的材质shader如下图
默认只有6个其他的都是添加的
重新打包AB包,80%用户已解决
本次就到这里了,谢谢大家观看
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律