前往
大廳
主題

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

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

前言:
剛好遇到這問題。



問題描述:
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
留言

創作回應

Ctrl+Shift+W
大佬
2021-10-06 09:27:12
FunS
https://stackoverflow.com/questions/61790839/unity3d-webgl-canvas-resizing-issue
感覺 config.devicePixelRatio = 1; 這段應該滿有希望的[e21]
2021-10-06 09:29:51
多古尼爾拉布拉布拉格
那個絲絲好酷
2021-10-06 12:08:43
%%鼠 拒收病婿
可以拉絲的糖糖
嗯~不甜甜
啊~~沒有拉絲
再來試一個❤
呼(倒抽氣)
拉絲了!!!!
2021-10-11 23:27:24
KK
學到了!感謝分享OvQ
2021-10-06 13:35:17
%%鼠 拒收病婿
感謝閱讀!
2021-10-11 23:27:08
FunS
找到了 真的是改config.devicePixelRatio = 1;
https://upload.cc/i1/2021/10/09/eHDk2s.png
2021-10-09 23:12:12
%%鼠 拒收病婿
感謝!!! 辛苦了 o(*°▽°*)o
下個輸出來試試看
2021-10-11 23:26:55
追蹤 創作集

作者相關創作

更多創作