ETH官方钱包

前往
大廳
主題

【Unity WebGL】Inputfield無法在WebGL啟動中文輸入(IME)的替代做法、js與Unity傳遞方法、資料

%%鼠 拒收病婿 | 2021-10-06 02:22:26 | 巴幣 334 | 人氣 1868

前言:
剛好遇到這問題。



問題描述:
Unity輸出成WebGL遊戲,InputField無法開啟IME(打字選字時會跳出來的東西),所以只能輸入英文。

替代方法:
呼叫網頁開啟對話dialog給使用者輸入,並回傳Unity遊戲。


步驟:
1.載字體
雖然在Unity的預設Arial字體能看到中文字,但實際輸出成WebGL是沒有中文字體的,所以請去抓個中文字體包給Text物件。

2.Unity呼叫js方法
官方文件寫的滿清楚的。
創個副檔名.jslib的檔案在Plugins資料夾下,把方法定義打在mergeInto(LibraryManager.library, {});內。
例如我宣告GetNameInput 方法去開啟瀏覽器對話框。
注意變數宣告要用var,用let會出錯。
第8行跟文件的有點不一樣,等等解釋。

3. Js呼叫Unity方法
雖然Unity呼叫的js方法能有回傳值,但我們這邊是要等用戶輸入,所以32行的變數input在觸發方法的當下是空字串。 這邊改由js輸入完後傳入Unity的反向操作回傳,如35行。

4.解決error:Uncaught ReferenceError: unityInstance is not defined.
若用的WebGL模板抓不到unityInstance 就會出現這個error。
打開editor的WebGL模板(template)的index.html檔案,找到createUnityInstance方法:
像第85行打上:window.unityInstance = unityInstance; (把instance記在瀏覽器上)


成功~



後記1:
別問我為甚麼要做成網頁遊戲??? ,話說有人知道手機看WebGL解析度超級差的解決方法嗎?

後記2:
最近在重寫自己的網站,在首頁做了些蝦趴特效,之後再寫個筆記
送禮物贊助創作者 !
0
留言
追蹤 創作集

作者相關創作

相關創作

更多創作