UnityScript эквивалент этого фрагмента C # - PullRequest
3 голосов
/ 16 декабря 2011

Как бы это выглядело в UnityScript?

void playerDataLoaded( List< GameCenterPlayer > players )
{
    foreach( GameCenterPlayer p in players )
    // do something with p
}

Players - это список, а не массив.

Я пытаюсь обработать ответ на событие от Apple GameCenter, который возвращает список атрибутов бляшки. Это ошибки:

"длина не является членом объекта player"

«Тип« Объект »(игрок) не поддерживает нарезку»

Используется плагин iOS Game Center, Unity и prime31 GameCenter.

Ответы [ 5 ]

5 голосов
/ 16 декабря 2011
function removePlayersDataLoaded(players){
  for(var i = 0; i < players.length; i++){
    var p = players[i];
    // do something with p
  }
}
0 голосов
/ 15 января 2014

Хотя список C # <> не идентичен приведенному ниже, что-то вроде этого

function Player(playerName, gameCenterPlayer)
{
   this.playerName = playerName;
   this.GameCenterPlayer = gameCenterPlayer; // i'm going to assume this has been calculated elsewhere, and all we need now is a boolean.
}

function playerDataLoaded(players) {
  this.players = players
  this.getCenterPlayer = function() {
var i = 0
  while (i < players.length) {
  if (players[i].GameCenterPlayer) {
console.log(players[i].playerName + " is the center player!");
}
i++;
}
}

}

var player1 = new Player("Ted", 0);
var player2 = new Player("Jane", 1);
var player3 = new Player("Doug", 0);
Players = new playerDataLoaded([player1, player2, player3]);

Players.getCenterPlayer()
0 голосов
/ 16 декабря 2011

Я полагаю, что это что-то вроде этого:

function remotePlayersDataLoaded(players) {
for (p in players)
  {
  // do your thing with p
  } 
}

Может быть, однако, ошибается, жалуется?

0 голосов
/ 16 декабря 2011

Использование .forEach для вызова итератора для каждого члена в списке

function removePlayersDataLoaded(players) {
    players.forEach(doSomethingWithPlayer);

    function doSomethingWithPlayer(p) {
        // code
    }
}

Или используя for цикл над массивом

function removePlayersDataLoaded(players) {
    for (var i = 0, len = players.length; i < len; i++) {
        var p = players[i];
        // code
    }
}
0 голосов
/ 16 декабря 2011

Это было бы что-то вроде:

var remotePlayersDataLoaded = function(players) {
  for (var i = 0; i < players.length; i++) {
    var player = players[i];
  }
};
...