1.实现的效果
我想实现一个unity发布成WebGL后加载ab包的效果,将ab包和WebGL部署到IIS上。这些博客都太有用了,谢谢分享的人。webgl iis部署 CORS缺少 这个问题没有遇到 大致如下,按照步骤来应该是可以配置加载成功的,弄了两天就是总结一下,为了以后如果还会遇到问题。IIS的安装在这里。如果哪位大神有更多关于webgl的分享可以加我qq:774603077。谢谢
2.Unity发布WebGL
1.ab包加载代码如下,url路径是一会儿iis上部署的ab包的路径:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Test : MonoBehaviour {
// Use this for initialization
void Start () {
StartCoroutine(LoadABB());
}
private IEnumerator LoadABB()
{
string url = "http://192.168.0.22:8011/AssetBundle/cube.unity3d";
//WWW www = new WWW(url);
UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(url);
yield return request.SendWebRequest();
if (request.isNetworkError)
{
Debug.Log("错误:" + request.error);
}
else
{
AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
GameObject go = ab.LoadAsset<GameObject>("Cube");
GameObject.Instantiate(go).transform.position = Vector3.one;
Debug.Log("加载完成了:" + go.name);
}
}
}
2.ab包打包代码如下,注意一点打包的环境就行,打包的文件夹是输入的
BuildTarget.WebGL
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//********************************************************************
// 文件名: BuildABEditor
// 描述: 打包生成AB包
// 作者: JMM
// 创建时间: 5/21/2018 9:49:42 AM
//********************************************************************
public class BuildABEditor {
/// <summary>
/// 打包
/// </summary>
[MenuItem("工具/生成WebGL ab包")]
static void Build_AssetBundle_WebGL()
{
BuildAssetBundleWindow_WebGL win = new BuildAssetBundleWindow_WebGL();
win.Show();
}
}
public class BuildAssetBundleWindow_WebGL : EditorWindow
{
/// <summary>
/// 打包到哪个文件夹下
/// </summary>
string fileName = "D:/AssetBundle/";
private void OnGUI()
{
EditorGUILayout.BeginHorizontal();
GUILayout.Label("打包到的文件夹:");
fileName = EditorGUILayout.TextField(fileName);
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("确定打包"))
{
BuildPipeline.BuildAssetBundles(fileName, BuildAssetBundleOptions.None, BuildTarget.WebGL);
Debug.Log("打包成功");
}
if (GUILayout.Button("取消打包"))
{
this.Close();
}
}
}
3.打包注意事项在官网上有,读懂官网就能全部懂了。我遇到的如下,在Player Setting里面这个选项不要勾选,勾选了的话Unity打包发布的时候就会查找咱们有哪些脚本没有用,如果没有用就不会打包到WebGL上:
3.IIS部署
- 简单部署在这里《部署过程》。物理路径里面我放了ab包(在AssetBundle下面)和WebGL的发布包。crossdomain.xml也不知道干什么用的,因为百度的时候有人添加了
- 部署后的配置web.config如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<staticContent>
<mimeMap fileExtension=".unity3d" mimeType="text/plain" />
<mimeMap fileExtension=".unityweb" mimeType="application/binary" />
</staticContent>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Headers" value="X-Requested-With,origin,content-type,accept" />
<add name="Access-Control-Allow-Methods" value="GET, PUT,POST,DELETE,HEAD OPTIONS" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
3.web.config也可以在iis上手动添加,添加MIME类型:
4.添加HTTP响应标头:
5.因为加载ab包需要访问目录,设置目录浏览权限为启动状态,因为启动,现在显示的是禁止。