Unity关于webgl学习

打包后的文件:
Unity关于webgl学习_第1张图片

如何创建webgl模板?
简单的方法:先用默认模板打包,然后复制TemplateData文件夹,复制到Assets/WebGLTemplates,比如叫Test,那么在ProjectSettings的WebGLTemplate地方就会看到一个叫Test名字的模板,选择即可。默认模板是Default。
Unity关于webgl学习_第2张图片
打包显示效果
模板里边的样式,logo等资源,可以自定义,打包时勾选自定义模板即可。
Unity关于webgl学习_第3张图片
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(){
			
	}
}

你可能感兴趣的:(unity,web,unity,webgl,学习)