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%用户已解决
本次就到这里了,谢谢大家观看
Unity生成AB包和加载AB包的更多相关文章
- Unity 打AssetBundle和加载方案
一.如何组织assetBundle: unity5以前,打包需要自己去找依赖,然后需要按照拓扑图顺序压入AB栈,这样在最后打AB时才能有效利用依赖(栈内已有的AB才能作为依赖). unity5.x后, ...
- Demo示例——Bundle打包和加载
Unity游戏里面的场景.模型.图片等资源,是如何管理和加载的? 这就是本文要讲的资源管理方式--bundle打包和加载. 图片 Unity游戏资源管理有很多方式: (1)简单游戏比如demo,可以直 ...
- Unity加载AB包
Unity制作游戏AB包 需要注意的是在游戏场景运行的情况下,不能编译AB包,不运行的情况下编译AB包需要使用Unity的扩展菜单功能,首先需要建立菜单用来编译AB包. 1.建立AB包的名字,首先选中 ...
- spring加载jar包中多个配置文件(转)
转自:http://evan0625.iteye.com/blog/1598366 在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <co ...
- 【Unity】AssetBundle的使用——打包/解包
最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结运行时用A ...
- Maven生成可以直接运行的jar包的多种方式
Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...
- Unity最新版打包AssetBundle和加载的方法
一.设置assetBundleName二.构建AssetBundle包三.上传AssetBundle到服务器四.把AssetBundle放到本地五.操作AssetBundle六.完整例子七.Asset ...
- 动态加载jar包(一)
一.编写被调用的类 package com.qunar.helloworld; public class HelloWorld { public String sayHello(){ return ( ...
- Maven生成可以直接运行的jar包的多种方式(转)
转自:https://blog.csdn.net/xiao__gui/article/details/47341385 Maven可以使用mvn package指令对项目进行打包,如果使用java - ...
- Maven生成可以直接执行的jar包
要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1.在jar包中的META-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里: 2.要能 ...
随机推荐
- 【SSO单点系列】(3):CAS4.0 之自定义返回登出页面
一.登出实现返回自定义页面 服务端修改 cas-servlet.xml <bean id="logoutAction" class="org.jasig.cas.w ...
- vscode中配置代码片段
首先我们需要把要配置的代码复制一下,如: 然后我们进入https://snippet-generator.app/网站, 进入网站之后就把你复制的代码粘贴到左边的框里面,然后就是代码的类型和命名了 写 ...
- Java-根据父级id将List结构转Tree结构
List的stream public ResultData queryMenuList() { // 获取所有数据List List<MenuVo> list = MenuDao.quer ...
- uni-app --vue3--TypeScript 微信小程序开发
微信小程序开发文档: https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/getstart.html#%E7%9 ...
- Postman中添加多个Cookie
在接口测试中,很多接口都是需要登录后才能获取到数据的.如何标识登录状态呢?有些app用token,有些app用Cookie.通过Fiddler抓包看到,我涯使用的是Cookie的方式,而且是有多个Co ...
- Day25:报告编写等
今天完成的任务: 1.完成全部结论的编写,完成一部分界面测试的撰写. 2.完成moodle配置 明日计划: 1.完成前端的原型介绍 2.完善前端设计与实现报告 每日小结: 今天完成了最后一次的答辩, ...
- oracle 索引创建
--查询表里的索引 select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.inde ...
- inux配置PATH路径
查看PATH:echo $PATH以添加python3为列 修改方法一:export PATH=P A T H : PATH:PATH:HOME/bin:export PATH=P A T H : P ...
- GuiLite 学习笔记(一) Mainloop与ViewTree
以GuiLiteSamples中的HelloSlide 为例,剖析一下GuiLite的设计思路和刷新机制: 首先是main.cpp; 可以分成3部分: 1.根据fb mode拿到对应的phy_fb, ...
- uniapp 扫描
借鉴链接:https://blog.csdn.net/qq_33165549/article/details/89879435 1.扫描页面 <template> <view> ...