如果要實現Unity與瀏覽器的數據交互一般都會采用兩種方式
方法一:
Application.ExternalCall("SayHello","helloworld");
這種方式可以在Unity中調用伊爾迷案中的JS函數
方法二:
SendMessage("Main Camera", "FunctionName", “參數”);
這種方式可以在網頁中用JS代碼往Unity中傳遞參數,調用對應的函數
但我在平時使用的過程中法閑了一個問題就是SendMessage只接受一個參數,這就非常尷尬了,萬一我們預留的函數需要多個參數呢,這個問題困惑了我好幾天
不論你怎么嘗試着傳遞參數都會出現這種錯誤
我試過這樣
SendMessage("Main Camera", "SetWenDu", 33,22);
還有這樣
SendMessage("Main Camera", "SetWenDu", “33”+“22”);
但時候都會出現這種錯誤
直到我有一天看到了一個國外的博客
尊重版權我把原鏈接粘貼上
http://www.feedingedge.co.uk/blog/2011/03/09/browser-to-unity3d-communication-and-back-again/
我發現Unity的SendMessage本來就只支持一個參數,難怪我一直不成功
博客中使用了一種自定義分隔符的方式實現了多個參數的傳遞
unity中:
void inboundfunction(string indata)
{
string[] words = indata.Split('~');
data1 = words[0];
moredata2 = words[1];
anotherpiece3 = words[2];
}
JS中:
<script type=”text/javascript”>
<!–
function callbackunity(arg)
{
alert(arg);
var unity = unityObject.getObjectById(“unityPlayer”);
unity.SendMessage(“Rezzer”, “inboundfunction”, “item1~item2~item3”);
}
–>
</script>
這種方法把多個參數合並成一個參數在C#中使用split吧參數分割開這樣就巧妙地實現了多個參數的傳遞