当前位置:   article > 正文

Unity之WebGL加载ab包_unitywebglab包加载

unitywebglab包加载

一、效果

二、注意事项 

网上有好多关于webgl加载ab包的方法,在实际跟随他们写的操作都失败了,最终在踩坑下我总结了webgl加载ab包要注意的三个问题:

1.ab包的创建生成BuildTarget类型注意使用WebGL(后面会告诉你这一步在哪)

2.加载使用WWW或UnityWebRequest方法(官方有描述,百度也有使用方法,这里不细说了)

3.这里点很重要,也是我在踩坑打包不出来的首要问题,IIS的MIME扩展类型注册你的ab包类型,否则访问会出现404错误(其实如果你们有专门的后台网站可以直接获取到这个ab包文件就不会出现这个问题)

三、 AB包的制作与加载

 下面开始部署制作了

1.首先创建ab包的脚本

Unity之AB包的创建加载_被代码折磨的狗子的博客-CSDN博客_unity 加载ab包

此链接是之前写的创建ab包的方法,直接把创建ab包的脚本替换就好了。其他操作都是一样的。

  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.IO;
  4. /// <summary>
  5. /// AB包创建
  6. /// </summary>
  7. public class CreateAssetBundles : MonoBehaviour
  8. {
  9. [MenuItem("AssetBundles/Build AssetBundles(WebGL)")] //特性
  10. static void BuildAssetBundle_WebGL()
  11. {
  12. string dir = Application.streamingAssetsPath + "/AssetBundles"; //相对路径
  13. if (!Directory.Exists(dir)) //判断路径是否存在
  14. {
  15. Directory.CreateDirectory(dir);
  16. }
  17. BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.WebGL); //这里是第一点注意事项,BuildTarget类型选择WebGL
  18. }
  19. }

 2.加载ab包的方式

原理和我之前写的文章是一样的,这里用一个最简单的脚本写一下,方便理解。

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine.UI;
  4. using UnityEngine;
  5. using UnityEngine.Video;
  6. using UnityEngine.Networking;
  7. /// <summary>
  8. /// 主界面管理器
  9. /// </summary>
  10. public class MainManager : MonoBehaviour
  11. {
  12. //提示文字
  13. [SerializeField] Text text;
  14. //加载按钮
  15. [SerializeField] Button loadBtn;
  16. void Start()
  17. {
  18. //按钮监听
  19. loadBtn.onClick.AddListener(Load);
  20. }
  21. //监听方法
  22. private void Load()
  23. {
  24. IEnumerator ie = load();
  25. //开启协程
  26. StartCoroutine(ie);
  27. }
  28. string url;
  29. IEnumerator load()
  30. {
  31. if (Application.platform == RuntimePlatform.WindowsEditor)
  32. {
  33. //unity编译器运行时,ab包的加载路径
  34. text.text = "WindowsEditor";
  35. url = Application.streamingAssetsPath + "/AssetBundles/cube.model";
  36. }
  37. else if (Application.platform == RuntimePlatform.WebGLPlayer)
  38. {
  39. //网页WebGL运行时,ab包的加载路径
  40. text.text = "WebGLPlayer";
  41. url = Application.streamingAssetsPath + "/AssetBundles/cube.model";
  42. }
  43. //UnityWebRequest获取ab包
  44. UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle(url, 0);
  45. yield return www.SendWebRequest();
  46. if (www.isNetworkError || www.isHttpError)
  47. {
  48. Debug.Log(www.error);
  49. }
  50. else
  51. {
  52. //获取ab包内容
  53. AssetBundle ab = DownloadHandlerAssetBundle.GetContent(www);
  54. //创建指定名称的ab包模型,其中cube代表ab包中模型的名称
  55. GameObject cube = ab.LoadAsset<GameObject>("cube");
  56. Instantiate(cube);
  57. }
  58. }
  59. }

 界面布局

 把上面脚本挂载后,给按钮和文字拖入赋值就可以了。

四、打包的WebgGL文件配置

这里对应的是上方注意事项的第三条,添加IIS的MIME扩展类型的,这里我们还没有安装IIS的Web服务,所以用文本的方式先配置好。

在打包的文件夹下创建一个 web.config 文件

 

 文件内容是:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <system.webServer>
  4. <staticContent>
  5. <mimeMap fileExtension=".unity3d" mimeType="application/octet-stream" />
  6. <mimeMap fileExtension=".unityweb" mimeType="application/binary" />
  7. <mimeMap fileExtension=".model" mimeType="application/octet-stream" />
  8. </staticContent>
  9. <directoryBrowse enabled="false" />
  10. </system.webServer>
  11. </configuration>

 下面开始部署iis

五、 Windos安装IIS服务

打包后的WebGL网页是无法直接访问的,需要部署服务器,这里我们用IIS来部署服务器

 1.安装Web服务

打开控制面板,在查看方式选中选择类别,然后选择程序

选择 “启用或关闭Windows功能” 。

建议根据下图勾选,确定后等待安装完成

IIS

2.创建网站 

安装完后打开IIS

网站创建

 

 属性配置

 部署完毕后,就可以访问你创建的webgl了。

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

闽ICP备14008679号