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包的更多相关文章

  1. Unity 打AssetBundle和加载方案

    一.如何组织assetBundle: unity5以前,打包需要自己去找依赖,然后需要按照拓扑图顺序压入AB栈,这样在最后打AB时才能有效利用依赖(栈内已有的AB才能作为依赖). unity5.x后, ...

  2. Demo示例——Bundle打包和加载

    Unity游戏里面的场景.模型.图片等资源,是如何管理和加载的? 这就是本文要讲的资源管理方式--bundle打包和加载. 图片 Unity游戏资源管理有很多方式: (1)简单游戏比如demo,可以直 ...

  3. Unity加载AB包

    Unity制作游戏AB包 需要注意的是在游戏场景运行的情况下,不能编译AB包,不运行的情况下编译AB包需要使用Unity的扩展菜单功能,首先需要建立菜单用来编译AB包. 1.建立AB包的名字,首先选中 ...

  4. spring加载jar包中多个配置文件(转)

    转自:http://evan0625.iteye.com/blog/1598366 在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <co ...

  5. 【Unity】AssetBundle的使用——打包/解包

    最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结运行时用A ...

  6. Maven生成可以直接运行的jar包的多种方式

    Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...

  7. Unity最新版打包AssetBundle和加载的方法

    一.设置assetBundleName二.构建AssetBundle包三.上传AssetBundle到服务器四.把AssetBundle放到本地五.操作AssetBundle六.完整例子七.Asset ...

  8. 动态加载jar包(一)

    一.编写被调用的类 package com.qunar.helloworld; public class HelloWorld { public String sayHello(){ return ( ...

  9. Maven生成可以直接运行的jar包的多种方式(转)

    转自:https://blog.csdn.net/xiao__gui/article/details/47341385 Maven可以使用mvn package指令对项目进行打包,如果使用java - ...

  10. Maven生成可以直接执行的jar包

    要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1.在jar包中的META-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里: 2.要能 ...

随机推荐

  1. Java中类似c语言的printf

    System.out.printf("%4d",x); printf("%4d",x); 保留小数点后两位也可以用%.2f 相对来说很好记了 回车用\n

  2. Java-封装结果集示例

    1 @Data 2 public class ResultData implements Serializable { 3 4 /** 5 * 状态码 6 */ 7 private String co ...

  3. Python与CSharp之间内存共享互传信息

    C#写入字符串到共享内存 try { long t = 1 << 10 << 10; var mmf = MemoryMappedFile.CreateOrOpen(" ...

  4. #pragma 小节

    (1)#pragma startup function-name <priority> (2)#pragma exit function-name <priority>   含 ...

  5. shell_Day05

    交互输入 read    Python中用input()函数,进行输入: read命令同时可以定义多个变量值:而输入的内容默认以空格为分隔符,将值输入到对应的变量中: 如果默认值过多,最后所有的值都会 ...

  6. npm不是内部或外部命令,也不是可运行的程序的解决办法

    通常是nodejs没有安装导致 转载https://segmentfault.com/a/1190000023390756 1.Node.js简介 Node.js 是一个基于 Chrome V8 引擎 ...

  7. Python学习笔记(三)数据类型转换

    一.输入输出函数 1.input() 输入函数,内置函数,用来获取用户输入数据,返回值为字符串 运行到此函数会阻塞或暂停程序 示例: 1 str_data = input('请输入数据:') 2 st ...

  8. linuxz中压缩解压缩文件

    压缩解压缩.tar格式文件: 把文件打包为tar.gz命令: tar -zcvf 文件名.tar.gz 要压缩的文件/文件夹                                      ...

  9. uniapp打包app出现HTML5+ Runtime

    在manifest.json->源码视图的 "app-plus"下面添加: "app-plus" : { "compatible" : ...

  10. From逗号是Sql92语法

    From 逗号是Sql92语法 Join on 是 Sql99语法 Sql92 外连接(+)语法,mysql不支持,oracle支持 (inner) join on   内连接 left / righ ...