Unity 發布的 WebGL 使用SendMessage傳遞多個參數


如果要實現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吧參數分割開這樣就巧妙地實現了多個參數的傳遞

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM