Тема: Массив
Показать сообщение отдельно
Старый 21.10.2013, 01:47   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Массив

Мой пример выше находит всего два значения в массиве, но чтобы их получить надо перебрать 21 итерацию цикла (пройтись от 0 до 20).

В данный момент я пишу бинарную сериализацию (бинарный TCP протокол), и мне надо иметь аналог из C# типа Dictionary<byte,object>. Т.к. js уже имеет разреженные массивы из коробки, то мне хотелось их использовать для этой задачи. Свойство мне нужно, чтобы указать сериализатору, что данный массив надо сериализовать как коллекцию Dictionary<byte,object>. Собственно мой пример выше решает задачу, но вдруг есть решение оптимальнее.

Сейчас я это делаю так:

var object = {} //объект для сериализации

// сериализует как массив байтов
object.arrayUInt8 = [1,2,255];
object.arrayUInt8.elementType 'UInt8';

// сериализует как ассоциативный массив с ключем типа UInt8
object.arrayByteProps = [];
object.arrayByteProps[10] = [1,2,3,4,5];
object.arrayByteProps[20] = {prop:12345};
object.arrayByteProps.elementType 'ByteProps';

object.v3 = new Vector3();

var 
dBuff = new DynamicBuffer();
BinarySerializer.serialize(objectdBuff); 
Со стороны C# я могу сейчас слать вот такие пакеты:
client.Send(new int[] { 1234});
client.Send(new string[] { "5""4""3""2""1" });
client.Send(new object[] { "5"null3true1.1f"привет!", new Vector3(5,3,1) });
client.Send(new Dictionary<stringobject> { { "123"123 }, { "Hi""Привет" } });
client.Send(new Dictionary<byteobject> { { 10123 }, { 20"Привет" } }); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием