멀티 플레이어 게임을 만들고 있는데 자바 스크립트에 여러 가지 키와 값이있는 개체가 있습니다.업데이트에서 개체를 수정하고 이전 키를 제거하는 방법?
이 개체는 게임 서버에 연결된 각 플레이어에 대한 정보를 보유하기 위해 플레이어라고합니다.
name
끊임없이 I는 서버에 요청을 보내고 같은 정보 x
, y
, level
를 보유 Player
오브젝트 등이다 선수에 대한 최신 정보를 얻으십시오. 이것은 매우 자주 발생하기 때문에
, 나는 players
개체마다 (players = {}
)을 재설정되고 싶지 않아, 그래서 대신에, 나는 어떤 새로운 정보로 개체를 업데이트하고 있습니다. 순간
나는 if name in players
을 확인하고, 만약 그렇다면,이 같은 객체 업데이트 : 정보와 함께,
players[name].x = x;
players[name].y = y;
// etc.
그렇지 않으면, 단순히 새로운 Player
객체를 생성을하고 players
객체에 추가 . (예를 들어 새로운 플레이어가 연결된 경우)
players
에 이미있는 플레이어가 더 이상 서버의 업데이트 된 정보에없는 경우 (즉, 플레이어의 연결이 끊어진 경우), 문제를 해결하려면 어떻게해야합니까? 그 물체.
더듬이 루프가 필요하며 플레이어가 더 이상 업데이트 된 정보에 없다면 객체에서 제거하거나 더 간단한 방법이 있습니까?
다른 방법이 없다면 사전을 재설정하고 데이터를 추가하는 것이 더 나은 방법일까요? 이런 단순한 일을하는 것이 최선의 방법이 아니라고 느낍니다.
여기에 지금까지 내 코드입니다 :
var newplayers = new info from server;
for(var i=0; i<newplayers.length; i++)
{
var pl = newplayers[i];
var name = pl.name;
var x = pl.x;
var y = pl.y;
// etc.
if(name in players)
{
players[name].x = x;
players[name].y = y;
// etc.
} else
newplayer = new Player();
newplayer.x = x;
newplayer.y = y;
// etc.
players[name] = newplayer;
}
}
// What if the player is no longer in the updated info, but still in players?
모든 도움 감사합니다! 미리 감사드립니다!
사전은 JavaScript에서 개체라고합니다. – JJJ
알려 주셔서 감사합니다. 네가 두 이름을 모두 사용할 수 있다고 생각 했어. 나는 그 질문을 갱신 할 것이다. –
새로운 플레이어로 오래된 플레이어 정보를 업데이트하고 새로운 플레이어를 오래된 플레이어에 추가하면 간단히'players = newplayers'를 설정할 수 있습니다 for 루프가 필요하지 않습니다. –