当前位置:   article > 正文

Unity部署至WebGL平台之AssetBundle加载_unity webgl通过 unity web request 加载模型

unity webgl通过 unity web request 加载模型

AssetBundle加载功能

(1)导入制作好的model模型,制作成prefab,小提示:需要将Modle的Rig属性设置为none,因为后面进行AB包加载的时候发现,带有动画属性的包,没有办法加载出来。

(2)导入官方免费打包助手 Asset Bundle Manager,没有此插件的并且不会下载的,评论区留邮箱,我会抽空发到您邮箱。

(3)如下图所示,点击build完成打包,相关的属性设置可以根据自己的需求来修改,平台一定要选WebGL.

(4)编写加载模块代码

  1. /// <summary>
  2. /// 下载地址
  3. /// </summary>
  4. public string strABUrl = @"http://127.0.0.1:7099/WebGL/";
  5. void Start()
  6. {
  7. //bundleNameList就是预设的名称列表,可以通过配置文件读取,也可以手动实例化,看你自己了
  8. for (int i = 0; i < bundleNameList.Count; i++)
  9. {
  10. StartCoroutine(DownloadBundleCoroutine(DoShowObj,
  11. strABUrl + bundleNameList[i] + ".unity3d", bundleNameList[i]));
  12. }
  13. }
  14. public IEnumerator DownloadBundleCoroutine(Action<GameObject> modelFound, string url, string modelName)
  15. {
  16. AssetBundle bundle = null;
  17. UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(url);
  18. request.SendWebRequest();
  19. while (!request.isDone)
  20. {
  21. Invoke(modelName, request.downloadProgress);
  22. yield return null;
  23. }
  24. bundle = DownloadHandlerAssetBundle.GetContent(request);
  25. GameObject model = null;
  26. if (bundle != null)
  27. {
  28. AssetBundleRequest newRequest = bundle.LoadAssetAsync<GameObject>(modelName);
  29. while (!newRequest.isDone)
  30. {
  31. Debug.Log("Loading");
  32. yield return null;
  33. }
  34. model = (GameObject)newRequest.asset;
  35. }
  36. modelFound(model);
  37. bundle.Unload(false);
  38. yield return null;
  39. }
  40. private void DoShowObj(GameObject go)
  41. {
  42. Instantiate(go);
  43. }

编写完成后,将此脚本挂载到场景中任意一个组件对象身上。

(5)打包,将打包文件部署到IIS服务器上,AB包的打包路径不是设置的IIS服务器路径,也请把资源放到服务器。

(6)输入IP访问自己的资源,查看加载是否完成。

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

闽ICP备14008679号