/// <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);
    }