unity3d unity -调用带有1个参数的函数,但该函数需要3个错误

rqmkfv5c  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(330)

我正在和一个Unity游戏开发人员合作,他的游戏的某个部分要求我们将会话数据传递到游戏中,以便在游戏中获得正确的用户。不幸的是,每次我试图使用他提供的文档传递数据时,我都会遇到错误“无法调用类NetworkManager的函数LoginSuccessful,使用1个参数调用函数LoginSuccessful,但该函数需要3个参数。"
他给了我函数参数和我应该遵循的数据类型,但是不知何故,它仍然返回相同的错误。我需要社区在这件事上的指导。

Unity游戏功能

public void FunctionA ( int A, int B, string token ) {

}

我的JS脚本

var a = 1;
var b = 1;
var c = '8d4a7d1a-69cc-40f9-a74e-0fa7b388fbc6';
var script = document.createElement("script");
script.src = loaderUrl;
var MyGameInstance = null;
script.onload = () => {
  createUnityInstance(canvas, config, (progress) => {
    progressBarFull.style.width = 100 * progress + "%";
  }).then((unityInstance) => {
    MyGameInstance = unityInstance;
    loadingBar.style.display = "none";
    MyGameInstance.SendMessage('NetworkManager', 'LoginSuccessful', a, b, c);
    fullscreenButton.onclick = () => {
      unityInstance.SetFullscreen(1);
    };
  }).catch((message) => {
    alert(message);
  });
};

游戏加载时的错误消息:

Failed to call function LoginSuccessful of class NetworkManager
Calling function LoginSuccessful with 1 parameter but the function requires 3.
qoefvg9y

qoefvg9y1#

不能通过MyGameInstance. SendMessage方法调用该函数。
来自Unity文档:
有时你需要从浏览器的JavaScript向Unity脚本发送一些数据或通知。推荐的方法是在你的内容中调用GameObject的方法。如果你是从嵌入在你的项目中的JavaScript插件进行调用,你可以使用以下代码:
MyGameInstance.SendMessage(objectName, methodName, value);
其中objectName是场景中对象的名称;methodName是脚本中当前附加到该对象的方法的名称;value可以是字符串、数字或空值。例如:
一米一米一x一米二米一x
MyGameInstance.SendMessage('MyGameObject', 'MyFunction', 'MyString');
参考:https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html
要传递所需的数据,必须修改FunctionA,使其只接受一个参数(例如JSON字符串),然后解析该参数以获得所需的参数。

相关问题