1. 程式人生 > >Unity 釋出WebGL並與JS進行傳參互動

Unity 釋出WebGL並與JS進行傳參互動

    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>