FourGen
> MapSizeZ = 200;
> ParamsFileData[4] = MapSizeX.ToString(); // а тут наверно баг :)
>
> В инт нельзя простыми методами записать не инт, можно но уж точно не
> пользователем. Тут вроде как безопасно +-, кроме того оно проверяется. Если что
> оно раньше определиться.
вы и сейчас не увидели :)
MapSizeZ = 200;
ParamsFileData[4] = MapSizeX.ToString(); // а тут наверно баг :)
Зануляются значения и заполняется массив параметров, не оч понял в чем вопрос?
FourGen
> Зануляются значения и заполняется массив параметров, не оч понял в чем вопрос?
Вы заполняете не тем параметром, я выделил жирным
>tac
Я заполняю тем параметром, отлаженный код я не могу заполнять не теми параметрами :), у меня карта квадратная в базовых настройках я этот парамтер я просто зануляю. Что бы не ошибиться и что бы не получилось разное, я сделал жесткое присвоение той же переменной. (в запись пойдет то что нужно гарантировано, на выход, можно поменять для тестов и тогда перезапишет)
У вас примерно то же самое было с int
Что то типа Port... += Port
примерно так же, с той лишь разницей что там точно был баг Port = Port + ... (Хотя второе значение нулилось ранее и исключения не вызывалось)
FourGen
серьезно? это адекватно? разжевываю
MapSizeX = 200; ParamsFileData[3] = MapSizeX.ToString(); MapSizeZ = 200; ParamsFileData[4] = MapSizeX.ToString();
Работает у вас это случайно, т.к. значения MapSizeX и MapSizeZ совпадают = 200. Но ParamsFileData[3] у вас хранится MapSizeX , а в ParamsFileData[4] хранится MapSizeZ .
Но с чего вдруг если не из за ошибки вы присвоили в ParamsFileData[4] значение MapSizeX ?
Напишите мне для проверки как изменится код, если я захочу, чтобы дефолтные значения были MapSizeX = 100 и MapSizeZ = 300 ... а еще лучше добавьте мне возможность, чтобы я мог это задать в юнити. И мы посмотрим ваши изменения в коде.
>u960
тяф
00000000: 22 E3 20 AC A5 AD EF 20 │ AD A5 E2 E3 20 A1 A0 A3 "у меня нету баг
00000010: AE A2 2C 20 AD A5 20 E2 │ AE 20 E7 E2 AE 20 E3 20 ов, не то что у
00000020: ED E2 A8 E5 20 E1 A5 AD │ EC AE E0 AE A2 20 A8 20 этих сеньоров и
00000030: AC A8 A4 AB AE A2 22 │ мидлов"
>u960
Обманываю в чем? Что набора байт, которые являются int недостаточно для записи чего хочешь с последующим четнием в любом виде и подвиде и изменениями типов при необходимости и отсутсвием необходимости делать что-то что читает только типизированные данны?
FourGen
> конвертация во что?
там же написано в самом начале
Используются два формата:
• текстовый, как наиболее репрезентативный, конвертирующий поля классов в
текст и разделяющий поля отступами (\t) и переносом строки (\n)
• бинарный, как наиболее экономный, конвертирующий поля классов в
последовательность байтов.
При этом может использоваться запись сразу в файл или получение дампа для
последующей записи или передачи по сети.
FourGen
u960
Товарищ FourGen как косвенно следует из его с его слов, просто не знает терминологии. То, что он показывает - это бинарное представление. Он это называет int. А текстовое представление информации он называет - string. И тогда у вас все получится и вы сможете понять написанное про DirectConvertor. И окажется, что она делает ровно то, о чем вы говорите.
Нашел правильное место для такого формата, как анализ чужого кода.
Разбор чужого кода - генерация мини карты. 05/05/2022 (UNITY, C#, Рефакторинг и ревью кода)
>u960
Ну-ну. Вы бы свои слова не выдавали бы за мои.
Я лишь сказал, что для записи по хорошему достаточно только int, все остальное не сильно нужно.
Все остальное вы выдумали. Я понимаю, что вам хочется показаться знающим человеком, но знания, реальной работой определяются, а не выхваченными отрывками умных слов. Эти самые умные слова, знать конечно неплохо, что бы правильно выражать мысли, но не критически обязательно, для выполнения работы.
Вы спросили, как я string переведу в int я вам показал. Что-то не так перевелось? Если я где-то не прав так и напишите, где?
Вы утверждаете, что я несу чушь? Значит вы знаете в чем просветите плз.
То, что человек несет чушь, написать может каждый (и это действительно может быть так). Но разница в том, что я делаю, и у меня все работает. Вот я выложил модуль по созданию мникарты к игре. Скачайте, покажите какой я криворукий, что там все будет падать. Да код там через 1 место и я ни сколько не сомневаюсь в этом, но нафиг ваш правильный криворукий код, который тупит после каждого нажатия?
Вы как раз судя по всему относитесь к тому классу программистов (хотя судя по тому, что вы пишете, я вообще сомневаюсь, что вы им являетесь, скоре к лассу БОЛТУН), о которых я написал у себя в теме.
Много гонора - работы 0, знаний кроме болтовни 0 и скил по знаниям умных слов 100%.
>tac
просто не знает терминологии
Я об этом уже 100 раз писал, и он превосходно это знает. Его просто раздражает, что я могу сделать лучше тех, кто у меня работал и считал себя програмистами. Ему не нравится, что я говорю, что они еще должны доплачивать за свою работу. Вот он и пытается представить все наоборот.
>u960
Есть факты. Работу легко проверить. Доказательств моих слов выше крыши.
FourGen
> Вы утверждаете, что я несу чушь? Значит вы знаете в чем просветите плз.
Мне кажется что они хотят сказать что инты можно напрямую хранить без конвертации их в строку содержаших символы этого инта как чары.
Но твой способ тоже работать будет и все будет ок. Есть просто люди которые в 2022 году байтики экономят там где в этом нет смысла.
>Mephistopheles
Подумаешь будет файл записи не 4Кб, а 16Кб пипец разница. Зато работать с этим более просто и удобно.
Mephistopheles
Нет. Было шутливо предложено перевести строку в int ... StringToInt, что очевидно абсурд ... но FourGen это ни сколько не смутило, так как для него все едино, что int, что массив байтов, и тем более уверен не знает, что такое ASCII символы, или UTF, в которые единственно и можно перевести строку переводя в бинарное представление.
Тяжело общаться с таким человеком, который не понимает что ему говорят ... тем более, гонора с перебором ...
>tac
Какое отношение IntToStr имеет к тому, что я говорил?
Тут есть по факту массив строк вот и перевожу. У меня же не бинарная информация пишется, а текстовая.
Нафиг мне какие-то извращения? Есть 10 парамтеров вот я 10 строк и записал. К нормальному чтению и записи это отношения не имеет.
ASCII символы, или UTF
Я это u960 хотел написать... типа вы еще мне расскажите про юникод... но не стал, но вы написали.
Знаю, я что это такое.
>tac
Какое отношение IntToStr имеет к тому, что я говорил?
Тут есть по факту массив строк вот и перевожу. У меня же не бинарная информация пишется, а текстовая.
Нафиг мне какие-то извращения? Есть 10 парамтеров вот я 10 строк и записал. К нормальному чтению и записи это отношения не имеет.
ASCII символы, или UTF
Я это u960 хотел написать... типа вы еще мне расскажите про юникод... но не стал, но вы написали.
Знаю, я что это такое.
>tac
Сорри только заметил уточняющий вопрос
UPD:
Но с чего вдруг если не из за ошибки вы присвоили в ParamsFileData[4] значение MapSizeX ?
Напишите мне для проверки как изменится код, если я захочу, чтобы дефолтные значения были MapSizeX = 100 и MapSizeZ = 300 ... а еще лучше добавьте мне возможность, чтобы я мог это задать в юнити. И мы посмотрим ваши изменения в коде.
1) Если в переменную MapSizeZ записать иное значение, оно будет в нее соотвественно записано.
2) Эта переменная проставляется в поле GUI интерфейса, где проверяются изменения ввода пользователя.
3) После первой отрисовки GUI интерфейса значение поле интерфейса Z (где записан сейчас X) запишется текущее значение переменной Z
То есть значения переменных будут соотвевовать реально введенным
как изменится код, если я захочу, чтобы дефолтные значения были MapSizeX = 100 и MapSizeZ = 300
MapSizeX = 100;
ParamsFileData[3] = MapSizeX.ToString();
MapSizeZ = 300;
ParamsFileData[4] = MapSizeX.ToString();
а еще лучше добавьте мне возможность, чтобы я мог это задать в юнити
* в Unity эти значения можно задать:
1) Запускаете расширения для рекдактора
2) нажимаете мышкой в поле ввода значения размер карты по X
3) Вписываете необходимосе значение размера по X
4) Нажимаете мышкой в поле для воода значения размер карты по Z
5) Вписываете необходимосе значение размера по Z
После этого переменные будут содержать:
MapSizeX = Указанное значение размера карты по X
MapSizeZ = Указанное значение размера карты по Z
ParamsFileData[3] = Указанное значение размера карты по X
ParamsFileData[4] = Указанное значение размера карты по Z
После возврата к дефолтным настройкам:
1)
MapSizeX = 200
MapSizeZ = 300 допустим, я поменял
ParamsFileData[3] = 200
ParamsFileData[4] = 200
2) В поле GUI интерфейса попадеют значения
MapSizeX = 200
MapSizeZ = 300
3) Проверяются изменения GUI интерфейса, проверили, присваиваем.
Присваиваем ParamsFileData[3] = MapSizeX
Присваиваем ParamsFileData[4] = MapSizeZ значение поменялось
После первойже отрисовки кадра значения будут:
MapSizeX = 200
MapSizeZ = 300
ParamsFileData[3] = 200
ParamsFileData[4] = 300
Вроде все правильно. (единственное, в чем вы меня смутили, это точно ли 100% выполняется (EditorGUI.EndChangeCheck()) после отрисовки первого кадра, вроде как да, я точно проверял, но можно еще раз посмотреть)
Для того, что бы дефолтные значения были 100 и 300 так и надо указать в переменных:
MapSizeX = 100;
ParamsFileData[3] = MapSizeX.ToString();
MapSizeZ = 300;
ParamsFileData[4] = MapSizeX.ToString();
присваиваем X, а записывается Z Магия :)
* Если у вас они не меняются, это не значит, что не работает, просто сделано чтение прошлых настроек. Необходимо вызвать сброс к дефолтным настройкам, что бы значения переустановились это же значения для ресета. (например удалить часть созданной карты, или файл настроек)
Хотя 1 ошибку я нашел, но пока не нашел причину, она появляется только после первого обновления части карты и только после перезапуска компа. (Перезапуск unity к этой ошибке не приводит) (Почему-то неправильно центрируется 1 обновляемый плейн, хотя там четко прописаны координаты, пока не понял в общем. Ее вызывать несколько геморно.)
UPD 2
Проверил, еще раз. Да все работает. Ошибки в этом нет, значения меняются как надо. (Вы еще можете увидеть, что оно не записывает в файл значение, (если там поменять), это то же не ошибка, это защита от менятелей значений :), предполагается, что что-то меняя вы поняли, как оно работает и где еще надо поменять в одном месте, что бы применить, софт падать не будет и функционировать будет при этом естесвенно, но с некоторыми доработками)
FourGen
ваши "бадания" с очевидной реальностью мне не интересны ... человек, не умеющий признавать свои ошибки - выглядит просто упрямым ослом.