2017-04-27 101 views
0

SendMessage調用調用統一功能:統一5.6 - 錯誤時從WebGL的SendMessage函數

gameInstance.SendMessage("MessageReceiver", "Test", "This is a message", "myname"); 

錯誤消息:

無法調用類的messageReceiver

的功能測試調用函數測試1參數但功能要求2.

(文件名:行:810)

和函數的定義:

public void Test(string message, string name) { 
    // If the call from JavaScript succeeds, an alert will show up on the page 
    Application.ExternalEval("alert('it works')"); 
} 

第一個參數「的messageReceiver」,是團結的遊戲對象的腳本連接到。

第二個「測試」是被調用函數的名稱。

其餘的參數被傳遞給被調用函數,在我的情況下,「測試」。你可以看到,我傳遞了2個字符串參數,這正是「Test」接收到的。那麼爲什麼有一個錯誤告訴我,我正在用1個參數調用函數?任何幫助,將不勝感激。

+0

什麼是'gameInstance'? – Programmer

+0

@Programmer有必要讓遊戲在網絡上運行:'var gameInstance = UnityLoader.instantiate(「gameContainer」,「Build/WebGL.json」);' – SoKeT

+0

看起來像一個5.6版本的功能。例如''gameInstance.SendMessage('MessageReceiver','Test','這是一條消息','myname');'。不太確定這是否有幫助,但是使用'''而不是'''也嘗試添加一個參數,看看會發生什麼,儘量不帶參數調用該函數,做實驗並告訴我們它在哪裏破壞,也許它甚至在沒有參數的情況下失敗...... – Programmer

回答

1

SendMessage函數只接受1個參數,如果您想發送多個參數,則該參數應該是一個數組。因此,只需使用值「這是一條消息」和「myname」並將此對象[]傳遞給sendMessage函數,創建一個臨時對象[]數組。

object[] args = new object[2]; 
args[0] = "This is a message"; 
args[1] = "myname"; 
gameInstance.SendMessage("MessageReceiver", "Test", args); 
+0

這不起作用。 'object [] args = new object [2];'甚至不是javascript – JeanLuc