Unity 釋出WebGL並與JS進行傳參互動
阿新 • • 發佈:2019-01-05
Unity釋出WebGL後<head>標籤中指令碼內容為:
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/WebGlTest.json", { onProgress: UnityProgress });
在其後新增互動方法GetName:
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/WebGlTest.json", { onProgress: UnityProgress }); function GetName() { var reg = new RegExp("(^|&)" + "name" + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); var name = null; if (r != null) { name = unescape(r[2]); gameInstance.SendMessage("GameManager", "SetName", name); } }
Unity中通過以下方法呼叫:
Application.ExternalCall("GetName");
可以將此方法放入Start中呼叫以實現unity模組載入完成後獲取通過get方式傳過來的引數。
Unity中被JS呼叫的方法需要放到GameManager物體上,方法如下:
public void SetName(string _name) { if (!string.IsNullOrEmpty(_name)) { if (target.childCount > 0) { Destroy(target.GetChild(0).gameObject); } Transform newTarget = Instantiate<GameObject>(Resources.Load<GameObject>("Prefab/" + _name), target).transform; } }
全屏:將兩個<div>標籤的style修改為
style="width: 100%; height: 100%;"
最終為:<div class="webgl-content" style="width: 100%; height: 100%;"> <div id="gameContainer" style="width: 100%; height:100%"></div> <div class="footer"> <div class="webgl-logo"></div> <div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div> <div class="title">WebGLProject</div> </div> </div>