打包后的文件:
如何创建webgl模板?
简单的方法:先用默认模板打包,然后复制TemplateData文件夹,复制到Assets/WebGLTemplates,比如叫Test,那么在ProjectSettings的WebGLTemplate地方就会看到一个叫Test名字的模板,选择即可。默认模板是Default。
打包显示效果
模板里边的样式,logo等资源,可以自定义,打包时勾选自定义模板即可。
webgl文字
unity在编辑器模式下,用的字体,打包时不会打包。有可能出现不显示文字的情况。需要自己选择一个字体。
Unity和Js互调
JSMain.jslib要放在Assets/Plugins下。
Javascript: JSMain.jslib
var JSMain = {
$input:null,
$unityGameObjectName : "",
$callUnity: function(){
if(input != null){
//调用unity核心方法,直接调用即可
SendMessage(unityGameObjectName, "UnityFuncA",input.value);
}
},
InputShow: function(GameObjectName_,v_)
{
unityGameObjectName = = Pointer_stringify(GameObjectName_);
var v = = Pointer_stringify(v_);
console.log("unity 回调InputShow: "+unityGameObjectName);
var input = document.createElement("input");
input.value = v;
input.focus();
},
isFullScreen:function (){
return document.fullscreen;
}
};
//JSMain内部方法可以,相互调用变量
autoAddDeps(JSMain,'$callUnity');
autoAddDeps(JSMain,'$unityGameObjectName');
mergeInto(LibraryManager.library,JSMain);
Unity: JSManager.cs
using System;
using System.Runtime.InteropServices;
public static class JSManager {
//js提供的接口,要写在扩展里边
#if UNITY_WEBGL && !UNITY_EDITOR
[DllImport("__Internal")]
public static extern void InputShow (string GameObjectName,string v);
[DllImport("__Internal")]
public static extern bool isFullScreen ();
#else
public static void InputShow(string GameObjectName,string v) {
}
public static bool isFullScreen (){
return false; }
#endif
}
Unity: InputWebGL.cs
public class UnityWebGL : MonoBehaviour{
//调用JS
public void callJS(){
JSManager.InputShow(gameObject.name,"hello world");
JSManager.isFullScreen();
}
//被JS调用
public void UnityFuncA(){
}
}