title: unity-web端h5记录
categories: Unity3d
tags: [unity, web, h5]
date: 2023-02-23 17:00:53
comments: false
mathjax: true
toc: true
unity-web端h5记录
前篇
- 5款常用的html5游戏引擎以及优缺点分析 - https://imgtec.eetrend.com/blog/2022/100557792.html
- Unity WebGL 开发指北(完全篇) - https://zhuanlan.zhihu.com/p/475307249
平台适配
文件 io 适配
构建和运行 WebGL 项目
- 构建和运行 WebGL 项目 - https://docs.unity3d.com/cn/2021.2/Manual/webgl-building.html
使用 nginx 作为文件服务器
- 下载地址: http://nginx.org/en/download.html
使用
-
启动
C:\server\nginx-1.0.2>start nginx
or
C:\server\nginx-1.0.2>nginx.exe
-
停止
C:\server\nginx-1.0.2>nginx.exe -s stop
或
C:\server\nginx-1.0.2>nginx.exe -s quit
-
重新载入配置
C:\server\nginx-1.0.2>nginx.exe -s reload
-
重新打开日志文件
C:\server\nginx-1.0.2>nginx.exe -s reopen
-
查看版本
C:\server\nginx-1.0.2>nginx -v
平台判断
-
编译宏 https://docs.unity3d.com/Manual/PlatformDependentCompilation.html
#if UNITY_WEBGLLogUtil.D("--- UNITY_WEBGL ");
#endif
-
运行时
Application.platform == RuntimePlatform.WebGLPlayer
http
使用 best http, 版本最新即可, 如: 2.8.2
websocket
使用 best http, 版本最新即可, 如: 2.8.2
- Unity下使用BestHTTP插件进行Http和WebSocket通信 - https://blog.csdn.net/foupwang/article/details/104725423
踩坑
未开启 gz
官方推荐的是 使用 nginx, 参考: https://docs.unity3d.com/cn/2021.2/Manual/webgl-server-configuration-code-samples.html
-
在
http {# 增加一个 server 配置server {listen 8811; server_name localhost;root C:/Users/wilker/Desktop/aaa; # unity 打出的 h5 包index index.html# location / {# root html;# index index.html index.htm;# }error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}######################################### Add the following config within http server configuration# ...# On-disk Brotli-precompressed data files should be served with compression enabled:location ~ .+\.(data|symbols\.json)\.br$ {# Because this file is already pre-compressed on disk, disable the on-demand compression on it.# Otherwise nginx would attempt double compression.gzip off;add_header Content-Encoding br;default_type application/octet-stream;}# On-disk Brotli-precompressed Javascript code files:location ~ .+\.js\.br$ {gzip off; # Do not attempt dynamic gzip compression on an already compressed fileadd_header Content-Encoding br;default_type application/Javascript;}# On-disk Brotli-precompressed WebAssembly files:location ~ .+\.wasm\.br$ {gzip off; # Do not attempt dynamic gzip compression on an already compressed fileadd_header Content-Encoding br;# Enable streaming WebAssembly compilation by specifying the correct MIME type for# Wasm files.default_type application/wasm;}# On-disk gzip-precompressed data files should be served with compression enabled:location ~ .+\.(data|symbols\.json)\.gz$ {gzip off; # Do not attempt dynamic gzip compression on an already compressed fileadd_header Content-Encoding gzip;default_type application/octet-stream;}# On-disk gzip-precompressed Javascript code files:location ~ .+\.js\.gz$ {gzip off; # Do not attempt dynamic gzip compression on an already compressed fileadd_header Content-Encoding gzip;default_type application/Javascript;}# On-disk gzip-precompressed WebAssembly files:location ~ .+\.wasm\.gz$ {gzip off; # Do not attempt dynamic gzip compression on an already compressed fileadd_header Content-Encoding gzip;# Enable streaming WebAssembly compilation by specifying the correct MIME type for# Wasm files.default_type application/wasm;}}
}
移动设备不支持
据说不用管这个
中文显示
http 请求
原生端旧的 best http 插件报错
Invoking error handler due to
ReferenceError: Runtime is not defined
at XMLHttpRequest.http_onload (http://localhost:8811/Build/aaa.framework.js.gz:3:85864)
- 解决办法: 升级 best http 插件到 2.8.2+ 即可.
UnityWebRequest 请求报错
exception thrown: TypeError: Cannot set properties of undefined (setting '1'),TypeError: Cannot set properties of undefined (setting '1')at _JS_WebRequest_Create (http://localhost:8811/Build/slotsweb.framework.js.gz:3:73755)at http://localhost:8811/Build/slotsweb.wasm.gz:wasm-function[47545]:0x10870bf
- 参考: https://forum.unity.com/threads/cannot-set-properties-of-undefined-setting-1-when-running-a-unitywebrequest.1248445/
- 暂时不去解决, 采用升级 best http 插件的办法