最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置

第一步 AssetBundle 的生成

在Asset下创建Editor文件夹最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第1张图片

然后创建脚本CreateAssetBundle内容

using UnityEditor;
using UnityEditor.Experimental.UIElements.GraphView;
using System.IO;
public class CreateAssetBundle
{
[MenuItem("Assets/Build AssetBundle")]
static void BuildAllAssetBundles()
 {
  string dir = "AssetBundles";
  if (Directory.Exists(dir) == false)
  {
   Directory.CreateDirectory(dir);
  }
  BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.WebGL);
  }
  }

核心代码:BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.WebGL);
第一个参数是保存的地址,第二个是压缩的格式,第三个是发布的平台
特别重要的是: 第二个参数 压缩的格式设置 webgl 最好设置ChunkBasedCompression格式 不然设置的Assebundle资源无法解析!!!

报错显示 ()

最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第2张图片

忘了说怎么设置需要打包的Assetbundle了
下面关于AssetBundle的资源的设置
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第3张图片

选择预设体或者图片素材相关资源时 右下角会出现最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第4张图片
这里可以设置导出的AssetBundle的名称,和类型(即后缀)
对于后缀的设置之后 需要在服务器 ISS服务器中配置 否则服务器无法识别该资源

配置步骤打开控制面板

在这里插入图片描述
然后选择小图标 再选择管理工具
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第5张图片

然后再选择IIS管理器
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第6张图片
然后选择自己设置的web 再选择MIME类型
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第7张图片
然后 选择添加 文件扩展名为刚刚导出AssetBundle的后缀名,MIME类型为 application/octet-stream最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第8张图片
然后点击确定 服务器就可以识别了 (注意的是 我这里用的是本地服务器,外网服务器也一样设置)
关于服务器的配置 可以搜搜 如何将主机设置成ISS服务器 会有很多教程

导出AssetBundle之后 会在AssetBundles文件夹中看到导出的AssetBundle资源

最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第9张图片
鼠标右击选择Show in Explorer
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第10张图片
将会看到生成的AssetBundles文件夹 其中生成了assetbundle的资源
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第11张图片

对于AssetBundle资源的调用

(我这里只说服务器的调用方式,这种方式 鄙人遇到了不少的坑 记忆犹新)
使用方法****UnityWebRequest
代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class Load : MonoBehaviour {

//用于刚开始的加载
 public string allposition= "http://39.97.223.160:80/AssetBundles/all.unity3d";
 // 这里为服务器的加载地址,将刚刚的AssetBundle资源放入到该地址下就可引用
IEnumerator Start ()
 {
 UnityWebRequest request1 = UnityWebRequestAssetBundle.GetAssetBundle(allposition);//请求资源
  yield return request1.SendWebRequest();    
 
  AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request1);    //解析资源
  GameObject allPre = ab.LoadAsset<GameObject>("All");   //下载资源
  Instantiate(allPre);   //实例化资源
  }
  

将其挂在场景物体上即可即可使用

补充

对于外网服务器的配置 我这里用的是阿里云 Windows Server2012R2

最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第12张图片
最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置_第13张图片

后续步骤一样 就不说了

你可能感兴趣的:(最新关于 WebGl中 AssetBundle中资源的生成与调用用 和 服务器 的搭建配置)