IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity之WebGL加载ab包 -> 正文阅读

[游戏开发]Unity之WebGL加载ab包

一、效果

二、注意事项?

网上有好多关于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包的脚本替换就好了。其他操作都是一样的。

using UnityEngine;
using UnityEditor;
using System.IO;

/// <summary>
/// AB包创建
/// </summary>
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.加载ab包的方式

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

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.Networking;

/// <summary>
/// 主界面管理器
/// </summary>
public class MainManager : MonoBehaviour
{
    //提示文字
    [SerializeField] Text text;

    //加载按钮
    [SerializeField] Button loadBtn;

    void Start()
    {
        //按钮监听
        loadBtn.onClick.AddListener(Load);
    }

    //监听方法
    private void Load()
    {
        IEnumerator ie = load();
        //开启协程
        StartCoroutine(ie);
    }

    string url;
    IEnumerator load()
    {

        if (Application.platform == RuntimePlatform.WindowsEditor)
        {
            //unity编译器运行时,ab包的加载路径
            text.text = "WindowsEditor";
            url = Application.streamingAssetsPath + "/AssetBundles/cube.model";
        }
        else if (Application.platform == RuntimePlatform.WebGLPlayer)
        {
            //网页WebGL运行时,ab包的加载路径
            text.text = "WebGLPlayer";
            url = Application.streamingAssetsPath + "/AssetBundles/cube.model";
        }

        //UnityWebRequest获取ab包
        UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle(url, 0);
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            //获取ab包内容
            AssetBundle ab = DownloadHandlerAssetBundle.GetContent(www);
            //创建指定名称的ab包模型,其中cube代表ab包中模型的名称
            GameObject cube = ab.LoadAsset<GameObject>("cube");
            Instantiate(cube);
        }
    }
}

?界面布局

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

四、打包的WebgGL文件配置

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

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

?

?文件内容是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".unity3d" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".unityweb" mimeType="application/binary" />
            <mimeMap fileExtension=".model" mimeType="application/octet-stream" />
        </staticContent>
        <directoryBrowse enabled="false" />
    </system.webServer>
</configuration>

?下面开始部署iis

五、?Windos安装IIS服务

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

?1.安装Web服务

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

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

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

IIS

2.创建网站?

安装完后打开IIS

网站创建

?

?属性配置

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

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:42:50  更:2022-09-04 01:43:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 6:11:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码