Listen to state not getting proper data [Unity Client]
-
My state is like this:
onInit(options)
this.maxClients = 5; this.minClients = 3; this.setState({ players: {}, apid: [], dpid: [1, 2, 3, 4, 5], });
onJoin(client, options) {
var id; id = this.state.dpid.shift(); this.state.apid.push(id); this.state.players[client.sessionId] = { playerId: id, cards: [], state: 1, pack: 0, trickData: { Rank: 0, Sum: 0, c1: 0, c2: 0, c3: 0 } }
C# code for listen to state change is:
room.Listen("players/:id", OnPlayerChange);
//room.Listen("players/:id/:playerId", OnPlayerIdChange);
//room.Listen("players/:id/:pack", OnPlayerPack);
room.Listen("players/:id/:cards/:number", OnCardsChange);Problem is when palyersId change the OnPlayerIdChange and OnPlayerPack both getting the this data of state
trickData: { Rank: 0, Sum: 0, c1: 0, c2: 0, c3: 0 }
i want to listen to only playerId and pack when this variable changes
-
Hi @hardik_sl! When you specify a segment starting with
:attrName
in the listeners, it will actually match any attribute, and assign the attribute name in thechange.path.attrName
variable.To listen for a particular value, you can specify it directly, without starting with
:
. Example:room.Listen("players/:id/playerId", OnPlayerIdChange); room.Listen("players/:id/pack", OnPlayerPack);
BTW, I see you have an array of
cards
there. I wouldn't recommend mutating arrays in the room's state, unless you use them as a stack - and justpush
andpop
on them. It's very tricky to keep the client state correct when removing or inserting values in-between the array.Hope this helps! Cheers!
-
@endel thank you. and i am just using cards array for push and pop only i am not mutating and thanks again for help.