找回密码
 立即注册
查看: 434|回复: 0

[笔记] untiy 转 H5 流程

[复制链接]
发表于 2022-2-2 21:29 | 显示全部楼层 |阅读模式
这个跟多的是经验分享吧
建议先看 unity的文档:WebGL 开发入门 - Unity 手册

  • 由于 JavaScript 中缺少线程支持,因此不支持线程。在 Unity 内部使用线程来加速性能以及在脚本代码和托管的 dll 中使用线程都是不受支持的。实质上不支持System.Threading命名空间中的任何内容
  • 无法在 Visual Studio 中调试 WebGL 构建。
  • 出于安全考虑,浏览器不允许直接访问 IP 套接字来进行联网。
  • WebGL 构建使用基于Web 音频API 的自定义音频后端。此情况下仅支持基本音频功能
  • WebGL 是一个 AOT 平台,因此不允许使用 System.Reflection.Emit 来动态生成代码。在所有其他 IL2CPP 平台、iOS 和大多数游戏主机上都是如此。

这篇文章主要说一下我遇到的一些问题,如果其中有说得不正确的地方,希望大家指出来。

  • 不能使用 Addressables.LoadAssetAsync<T>(*),这里触发的是第一条,不支持多线程。可以使用Resource.load 代替。资源都要放在Resource目录下,还有如果加载图片不需要带图片后缀.
  • 字体的问题,如果在unity里面字体是正确的,但是在网页端字体是错误的,这里是由于字体字符不正确导致的。
   Unity默认的字体是Arial字体,在Unity发布WebGL的时候中文不能够显示,或者显示不全等。首先想到的是字体类型不对,下载一个完整的字体格式就可以了。DroidSansFallback字体下载地址:http://www.pc6.com/softview/SoftView_67216.html
如果想要确认字体是否不全,或者字体是否携带需要的字符。可以使用 Fontcreate 软件,打开字体,搜索缺失的字符是否存在。

  • unity 转 h5 最重要的就是网页js和c#之间的调用,c#和js之间的调用。
需要在plugins文件夹下,加入*.jslib 文件,需要放在plugins的根目录下。
写法如下:





  • c# 调用js
    根据unity的文档,应该都不难实现。只是需要特别注意 string 的处理,c#传字符传参数到js,这时候字符串会是一个number,需要调用Pointer_stringify(str)把字符串提取出来。
    如果方法返回值为string。则需要调用如下代码:
       var returnStr = "bla";
        var bufferSize = lengthBytesUTF8(returnStr) + 1;
        var buffer = _malloc(bufferSize);
        stringToUTF8(returnStr, buffer, bufferSize);
        return buffer;

  • js调用c#
    1、新建一个c#文件 必须继承 MonoBehaviour, 假如名字为:H5ToUnity.cs
    2、在游戏场景中 添加一个gameobject(假如取名:ABC123),然后添加脚本:H5ToUnity
    3、在javascript 里面 或者在 Example.jslib 传回unity
        在javascript 里面:需要拿到unityinstance对象,然后调用。写法如下:
        unityInstance.SendMessage('ABC123', 'RewardedVideoSuccess', 10);
    在Example.jslib里面,由于会编译到 "项目名.framework.js" 中,会有一个Module变量,此时的调用写法如下:
         var SendMessage = Module["SendMessage"];
        SendMessage('ABC123', 'RewardedVideoSuccess', 10);

Unity 编译 如果找不到命名空间,可以尝试在引用里面,可以把需要的项目重新引用进来
如果遇到命名空间重复,删除本地 不需要的dll  尤其是自己加的.net 库

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 10:06 , Processed in 0.091059 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表