赞
踩
WebGL的本地测试华景就不赘述了,找一个教程在本地部署上环境就行了。unity打包webgl 部署到本地Web服务器_unity打包成webgl-CSDN博客
我们主要讲的是在unity中的打包设置,和打AB读取AB的过程和注意事项!
我们就逐步的操作起来吧!
1、下载WebGl平台,调整PC平台基础。(详情Unity 在web上材质显示正常,但是unity端材质显示为紫色_unity模型变成紫红色_一直在努力的平平的博客-CSDN博客转)

取消勾选Auto Graphics API for Windows
在Graphics APIs for Windows中添加 OpenGLES3并且置顶

勾选Webgl平台的Decompression Fallback
好的webGL平台设置就可以了,有其他配置因需求而异。
2、打AB包读取AB包
2.1、打包之前要把自己的shader添加到Always Included Shaders不然出包之后会丢失shader

2.2、编辑快捷打包拓展(这儿只是针对性的对WebGl做得一个简单的快捷打包)
- public class CreateAssetBundles : MonoBehaviour
- {
-
- [MenuItem("AssetBundles/Build AssetBundles(WebGL)")] //特性
- static void BuildAssetBundle_WebGL()
- {
- string dir = Application.streamingAssetsPath + "/AssetBundles"; //相对路径
- if (!Directory.Exists(dir)) //判断路径是否存在
- {
- Directory.CreateDirectory(dir);
- }
- BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.WebGL); //这里是第一点注意事项,BuildTarget类型选择WebGL
- }
- }
2.3、WebGL端读取AB包
- public class MainManager : MonoBehaviour
- {
-
- //提示文字
- [SerializeField] Text text;
- //加载按钮
- [SerializeField] Button loadBtn;
-
- public void Start()
- {
- loadBtn.onClick.AddListener(() => { Load(); });
- }
-
-
- //监听方法
- public void Load()
- {
- IEnumerator ie = load();
- //开启协程
- StartCoroutine(ie);
- }
-
- GameObject go;
-
- string url;
- IEnumerator load()
- {
-
- if (Application.platform == RuntimePlatform.WindowsEditor)
- {
- //unity编译器运行时,ab包的加载路径
- text.text = "WindowsEditor";
- url = Application.streamingAssetsPath + "/AssetBundles/cube.u3d";
- }
- else if (Application.platform == RuntimePlatform.WebGLPlayer)
- {
- //网页WebGL运行时,ab包的加载路径
- text.text = "WebGLPlayer";
- url = Application.streamingAssetsPath + "/AssetBundles/cube.u3d";
- }
-
- //UnityWebRequest获取ab包
- UnityWebRequest Request = UnityWebRequestAssetBundle.GetAssetBundle(url, 0);
- yield return Request.SendWebRequest();
-
- if (Request.result != UnityWebRequest.Result.Success)
- {
- Debug.Log(Request.error);
- }
- else
- {
- //获取ab包内容
- AssetBundle ab = DownloadHandlerAssetBundle.GetContent(Request);
- //创建指定名称的ab包模型,其中cube代表ab包中模型的名称
- GameObject cube = ab.LoadAsset<GameObject>("dimian");
- go = Instantiate(cube);
- }
- }
- }

我这儿是把加载ab的模型写死的,可以自己简单封装一下。
下面就自己去试试吧!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。