当前位置:   article > 正文

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

webgl assetbundle

第一步 AssetBundle 的生成

在Asset下创建Editor文件夹在这里插入图片描述

然后创建脚本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);
  }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

报错显示 ()

在这里插入图片描述

忘了说怎么设置需要打包的Assetbundle了
下面关于AssetBundle的资源的设置
在这里插入图片描述

选择预设体或者图片素材相关资源时 右下角会出现在这里插入图片描述
这里可以设置导出的AssetBundle的名称,和类型(即后缀)
对于后缀的设置之后 需要在服务器 ISS服务器中配置 否则服务器无法识别该资源

配置步骤打开控制面板

在这里插入图片描述
然后选择小图标 再选择管理工具
在这里插入图片描述

然后再选择IIS管理器
在这里插入图片描述
然后选择自己设置的web 再选择MIME类型
在这里插入图片描述
然后 选择添加 文件扩展名为刚刚导出AssetBundle的后缀名,MIME类型为 application/octet-stream在这里插入图片描述
然后点击确定 服务器就可以识别了 (注意的是 我这里用的是本地服务器,外网服务器也一样设置)
关于服务器的配置 可以搜搜 如何将主机设置成ISS服务器 会有很多教程

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

在这里插入图片描述
鼠标右击选择Show in Explorer
在这里插入图片描述
将会看到生成的AssetBundles文件夹 其中生成了assetbundle的资源
在这里插入图片描述

对于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);   //实例化资源
  }
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

补充

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

在这里插入图片描述
在这里插入图片描述

后续步骤一样 就不说了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/92021
推荐阅读
相关标签
  

闽ICP备14008679号