UnityWeb打包注意事项及与网页端通信
ProjectSettings 参数设置
- 选择 File -> Build Settings。
- 选择 WebGL 作为目标平台,然后点击 Switch Platform。
- Resolution and Presentation设置分辨率 : 将会在浏览器显示的默认大小
OtherSettings
- OtherSettings 取消勾选 AutoGraphicsAPI(有的版本会有一个警告:,其大致意思就是在提醒我们要在 Unity WebGL 构建中启用高质量的光照贴图编码并确保 WebGL 2 兼容性,解决这个警告只需要将Auto Graphics API 自动图形接口关闭后在Graphics APIs选择WebGL2就可以解决这个警告) 用WebGL2的渲染方式
Publishing Settings 发布设置
- 分两种情况介绍 选择压缩的 选择不压缩的
- Compression Format是打包后的Build包的压缩格式
index.html设置,网页发送消息给Unity
- 初始化unityIns
- 使用Unity官方函数SendMessage,把如下代码index.html里面
window.addEventListener('message', function (event){const { method,fn, message } = event.data;if (method&&fn) return unityIns.SendMessage(method, fn, message);//alert('缺少脚本名称或方法名');});
-
method:对象名,是与web端约定好的名称 如下是约定的名字是JSBridge
-
fn:函数名,与网页约定的函数名是SendToUnity
-
messag:字符串类型
public void SendToUnity(string input){if (input.Length<1)return;if (objs.Count < 1)return;SetActive();if (input.Contains("|")) { var message = input.Split('|');var index = int.Parse(message[0]) - 1;objs[index].SetActive(true);AnimatorStateInfo info = objAnims[index].GetCurrentAnimatorStateInfo(0);if (!info.IsName(message[1])){objAnims[index].Play(message[1]);}}}
Unity发送消息给网页
-
注意:有可能UnityWeb还没有完成前摇就发送信息,导致丢失数据的情况,那么就得向Web通知准备完成后再发送指令。
var Test = {SendMessageToVue: function (messagePtr) {var message = UTF8ToString(messagePtr);console.log(message);window.parent.postMessage({ type: "FROM_UNITY", data: message },"*");} }mergeInto(LibraryManager.library, Test);
把如上代码写入txt文本,并改后缀名.jslib,导入Unity的Plugins文件夹下
这样Web就能收到Unity发送的数据了
-
此连接是整理完整的模板可以直接解压并导入项目,导出时选择此模板就ok 导出模板