SendMessage с параметром массива в единстве webgl - PullRequest
0 голосов
/ 12 февраля 2019

Unity SendMessage может передавать только один параметр, и это может быть массив.Поэтому я вызываю свой sendMessage для javascript и вызываю метод C # (точнее, метод webgl)

var arr = [x,y,z];
gameInstance.SendMessage("Cube","SetGameObjectPosition",arr);

, но получаю эту ошибку

Вызывает обработчик ошибок из-за

Uncaught 2,2,2 не имеет типа, который поддерживается SendMessage.[Нарушение] обработчик 'click' занял 8994ms blob: http://localhost/1ff50200-cb3a-4367-ab45-f02e9734fac2:2 Uncaught 2,2,2 is не имеет типа, который поддерживается SendMessage.

SendMessage @ blob: http://localhost/1ff50200-cb3a-4367-ab45-f02e9734fac2:2

SendMessage @ UnityLoader.js: 4

SetObjectPosition @ (индекс): 44

onclick @ (индекс): 65 (индекс): 65

[Нарушение] обработчик 'click' занял 9000ms

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете передать строку json:

var pos = {x:1,y:2,z:3};
gameInstance.SendMessage("Cube","SetGameObjectPosition", JSON.stringify(pos));

В единстве:

void SetGameObjectPosition(string data)
{
    var position = JsonUtility.FromJson<Vector3>(data);
}
0 голосов
/ 12 февраля 2019

Из SendMessage Docu

SendMessage(objectName, methodName, value);

Где objectName - имя объекта в вашей сцене;methodName - это имя метода в сценарии, в данный момент прикрепленного к этому объекту;value может быть строкой, числом или может быть пустым.

-> нет, это не может быть массив


Нокажется, что вы хотите передать позицию, чтобы в качестве обходного пути вы могли передать строку типа «2,2,2» и использовать

string[] numberStrings = ("2,2,2").Split(",");
float x = float.TryParse(numberStrings[0], out x) ? x : 0;
float y = float.TryParse(numberStrings[1], out y) ? y : 0;
float z = float.TryParse(numberStrings[2], out z) ? z : 0;

или что-то в этом роде

...