実現したいこと
現在WebGLでjslibを用いてuserAgentを読み取り、C#スクリプトに値を渡し、Textに文字をsetして画面に表示する。
という試みをしています。WebGLを起動したデバイスを判別する為に読み取ることを目的としています。
現状発生している問題は二つあり、一つはビルドは問題なく通るが、サーバーにWebGLをUPし起動するとエラーが発生して起動しない。
二つ目はEditorでjslibの処理を読み込まないように#if UNITY_WEBGL && !UNITY_EDITOR
を入れてビルドしようとするとエラーが発生しビルドできません。
二つ目の問題が発生するため、現状ビルド時には#if UNITY_WEBGL && !UNITY_EDITOR
を入れずにビルドしています。
エラーメッセージ
1のエラーメッセージ
該当のソースコード
jslib
1mergeInto(LibraryManager.library, { 2 StringReturnValueFunction: function () { 3 var returnStr = window.navigator.userAgent.toLowerCase(); 4 var bufferSize = lengthBytesUTF8(returnStr) + 1; 5 var buffer = _malloc(bufferSize); 6 stringToUTF8(returnStr, buffer, bufferSize); 7 return buffer; 8 }, 9});
cs
1using UnityEngine; 2using TMPro; 3using System.Runtime.InteropServices; 4 5public class JsTest : MonoBehaviour 6{ 7#if UNITY_WEBGL && !UNITY_EDITOR 8 public TextMeshProUGUI Text; 9 10 [DllImport("__Internal")] 11 private static extern string StringReturnValueFunction(); 12 13 void Start() 14 { 15 // 文字列の戻り値 16 Text.text = (StringReturnValueFunction()); 17 } 18#endif 19}
試したこと
こちらのサイトを参考にしました。
UnityWebGLでスマホか否かを判別する
WebGL: ブラウザースクリプトとの相互作用
補足情報(FW/ツールのバージョンなど)
Unity2019.1.4f1
回答1件
あなたの回答
tips
プレビュー