Tablica wielowymiarowa - problem z przesłaniem

Programowanie gier multiplayer, chat, bazy danych i inne.

Tablica wielowymiarowa - problem z przesłaniem

Postprzez Kaze47 » 25 Sty 2017, 18:07

Witam, pracuje nad komunikacją klient-serwer, mam pewną zagwozdkę czy tak musi być czy może jest jakiś efektywniejszy sposób?

Wysyłam do serwera zapytanie o przesłanie mapy przez funkcje która jest na serwerze
serwer w odpowiedzi wysyła mi tablice [,,] do funkcji, myślałem, że automatycznie dostane tablicę taką jak pierwotna ale wychodzi na to, że przesłana tablica jest jednowymiarowa i wstępnie problem rozwiązałem tak:

Kod: Zaznacz wszystko
[TargetRpc]
void TargetMapRequest(NetworkConnection target, short[,,] chunkData)
{
    chunk = new short[WSetup.chunkSize, WSetup.chunkSize, WSetup.chunkHeight];
    for (int x = 0; x < WSetup.chunkSize; x++)
    {
        for (int z = 0; z < WSetup.chunkSize; z++)
        {
            for (int y = 0; y < WSetup.chunkHeight; y++)
            {
                chunk[x, z, y] = (short)chunkData.GetValue(WSetup.chunkSize * WSetup.chunkSize * x +WSetup.chunkSize*z+y);
            }
        }
    }
 Debug.Log("receive data - client:" + chunk[0, 1, 0]);
}


a i jeszcze do przesłanej tablicy nie mogę się dostać w ten sposób chunkData[0,0,0] (w ten też nie chunkData[0]) chociaż sprawdzając jej długość ma dobrą liczbę elementów.
Kaze47
 
Posty: 51
Rejestracja: 23 Sty 2017, 14:40
Has thanked: 0 time
Been thanked: 0 time

Re: Tablica wielowymiarowa - problem z przesłaniem

Postprzez Kaze47 » 27 Sty 2017, 17:29

przepisałem wszystko na tablice jednowymiarowa i problem z glowy
Kaze47
 
Posty: 51
Rejestracja: 23 Sty 2017, 14:40
Has thanked: 0 time
Been thanked: 0 time

Re: Tablica wielowymiarowa - problem z przesłaniem

Postprzez Marcin » 27 Sty 2017, 17:58

Nie robiłem nigdy nic z multiplayerem. Wiem jednak, że Unity nie radzi sobie z serializacją tablic wielowymiarowych. Najpewniej dane są w ten sam sposób serializowane przy przesyłaniu przez sieć, co przy zapisie do plików scen. Jednym ze sposobów obejścia tego jest właśnie używanie tablic jednowymiarowych lub opakowanie danych w klasy. Ewentualnie napisanie jakiegoś serializera/deserializera.
Marcin
 
Posty: 292
Rejestracja: 25 Lip 2016, 10:44
Has thanked: 0 time
Been thanked: 0 time


Wróć do Multiplayer i Sieć

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość