Unity_WebGL相關

先說個題外的
ajax遇到跨域問題(我用jquery)html

$.ajax({
    url:url,
    dataType:"jsonp",
    type:"GET",
    success:function(msg)
    {
        //......
    }
});

要用jsonp和get
在ajax請求後得到的數據,用JSON.parse來轉換json,若是報錯了,那有多是傳過來的數據裏有非法字符,好比中文符號之之類的jquery

再次總結一下Unity WebGL下C#與JS交互一些基本web

1、從頁面上用js調取Unity中的方法ajax

gameInstance.SendMessage("GameObjectName", "FunctionName", param);

要調用Unity場景中的某個方法就要知道這個方法所在腳本掛在哪一個物體上,須要這個物體的名字,也就是第一個參數GameObjectName,而後FunctionName就是這個方法的方法名,最後是傳的參數json

我試過真接用ajax,success接收到的數據直接做爲第三個參數傳,會報錯,說不能傳這個類型的,而這個類型應該是js裏的objectcanvas

$.ajax({
    url:url,
    type:"post",
    success:function(msg)
    {
        gameInstance.SendMessage("GOName", "FName", msg);
    }
});

如上就會報錯。
獲得的msg應該是一個json串,可是想用以前的JSON.parse轉換成json字符串也報錯,不過能夠把msg裏的元素直接點出來,好比
msg.name,msg.id……
因此最後是手動拼的json串跨域

var str='{"name":"'+msg.name+'","id":"'+msg.id+'"}';
gameInstance.SendMessage("GOName", "FName", str);

這樣才成功瀏覽器

2、Unity中調取js中的方法ide

Application.ExternalCall("JSFunctionName", params[]);

雖然在新版本的Unity中(具體從哪一個版本開始沒注意)
Application.ExternalCall就棄用了,但我仍是習慣用這個,反正也能運行
而新的jslib的方式,以前也試過,用不慣……函數

3、讓Unity發佈出的程序隨頁面縮放,即自適應
發佈出來的WebGL程序有一個index.html,在裏面加些東西,改些東西就好了

<script>
    var gameInstance = UnityLoader.instantiate("gameContainer", "Build/WebStudy.json", {onProgress: UnityProgress});
</script>

上面這行是固定有的,定義了gameInstace
在它下面再添加一個script標籤,裏面填上咱們須要的js代碼

<script>
function Reset()
        {
            var canvas=document.getElementById("#canvas");
            canvas.height=document.documentElement.clientHeight;
            canvas.width=document.documentElement.clientWidth;
        }
</script>

也就是建了一個叫Reset的函數
這裏以canvas爲id的組件是在運行以後生成的

而這個reset方法要在運行開始時,和改變瀏覽器窗口大小時起做用
因而

<body onload="Reset()" onresize="Reset()">

而原先的主界面的div,也要改一改

<div class="webgl-content" style="width:100%;height:100%">
    <div id="gameContainer" style="width:100%; height:100%">

即最外面的div里加上style,讓width和height都是100%,在其下的gameContainer中,將原先固定像素數的width和height也改爲100%。這樣所有改完以後,再運行頁面,就是佔滿整個瀏覽器窗口,並且自適應。若是不想佔滿,須要調整Reset方法裏canvas的width和height,同時也要調整gameContainer的style,並且兩邊要一至。

相關文章
相關標籤/搜索