/// <summary> /// Считываем структуру в Reader(обертка над массивом байт) /// </summary> public bool FromReader(NetDataReader reader) { int startPos = reader.Position; try { int count = reader.GetInt(); if (count <= 0) { reader.GetInt(); return(true); } //var hits = new NetworkHitData[count]; var bytes = reader.RawData; int startP = reader.Position; int size = NetworkHitData.SIZE; int offset = 0; for (int i = 0; i < count; i++) { var data = new NetworkHitData(); if (!data.UnsafeCopyFrom(bytes, startP + offset)) { throw new Exception("Не смог считать данные о " + typeof(NetworkHitData)); } Hits.Add(data); //hits[i] = data; offset += size; } reader.AddOffset(offset); int count2 = reader.GetInt(); startP = reader.Position; offset = 0; for (int i = 0; i < count2; i++) { string str; int res = bytes.ToString(startP + offset, out str); if (res == -1) { throw new Exception("Не смог считать данные о PlayerIDs"); } offset += res; PlayerIDs.Add(str); } /*int lenArray; * string[] outStrs = null; * int res = bytes.ToStringArray(startP + offset, ref outStrs, out lenArray); * if(res == -1) * { * throw new Exception("Не смог считать данные о PlayerIDs"); * } * offset += res;*/ reader.AddOffset(offset); //Hits = hits; //PlayerIDs = outStrs; return(true); } catch (Exception e) { Debug.LogError("FromReader is bad=" + e); } reader.Position = startPos; Clear(); return(false); }