Size: a a a

Unity Floodилка

2021 March 10

GD

Grygory Dyadichenko in Unity Floodилка
Phantom
Ты как читаешь файл?
Ты текстовый файл по другому читать не можешь
источник

GD

Grygory Dyadichenko in Unity Floodилка
Не как строку, у тебя каждый символ в текстов файле - это символ. У тебя флот не сериализован в текстовых файлах, как 4 байта)
источник

GD

Grygory Dyadichenko in Unity Floodилка
Grygory Dyadichenko
Obj это у нас не бинарный формат, а текстовый. И с текстовым в чём прикол. Количество занимаемых байт зависит от кодировки и количества символов. Но у тебя может быть число «345.123» и «345». В бинарном файле - это всегда 4 байта. А в текстовом - это у нас зависит от длинны строки и кодировки. Скажем в utf-8 символы в самом максимуме весят 4 байта. То есть для первого числа тебе нужно будет считать 7х4=28 байт (так как точка тоже символ), а во-втором 3х4=12 байт) В той же ASCII кодировке символ весит 1 байт, так что там это будет 7 и 3 байт соответственно)
Перечитай это
источник

GD

Grygory Dyadichenko in Unity Floodилка
Там всё на эту тему расписано
источник

P

Phantom in Unity Floodилка
Ну я понял
источник

GD

Grygory Dyadichenko in Unity Floodилка
Ну поэтому флот в текстовом файле не 4 байта) И этот метод не работает)
источник

P

Phantom in Unity Floodилка
Просто, дело муторное
источник

GD

Grygory Dyadichenko in Unity Floodилка
Очень условно текстовый файл можно представить себе, как char[]. И дальше из этого все следствия. Строго говоря - это не совсем так. А точнее так с оговорками на тему кодировок. Поэтому любое число - это char[], и нужно уметь преобразовывать его. А точнее чтобы не срать в память из-за динамической длинны нужно уметь перегонять в float - List<char>
источник

GD

Grygory Dyadichenko in Unity Floodилка
Так как ToArray - это сразу аллокация массива)
источник

GD

Grygory Dyadichenko in Unity Floodилка
В общем, то что я описывал выше один из вариантов 100% работающий) Довольно простой) То что ты показывал вчера с char[] может работать, но это 5-ый .Net, который я даже изучать пока не хочу, чтобы не расстраиваться "когда же это появится в юнити")
источник

GD

Grygory Dyadichenko in Unity Floodилка
Он просто очень похож по сигнатуре на то, что должно работать, так как там даже FloatPointFormatting или как там его указывается) Но все спаны - это .Net 5+
источник

GD

Grygory Dyadichenko in Unity Floodилка
И Standard 2.1 ) А в юнити у нас 4.х и 2.0)
источник

GD

Grygory Dyadichenko in Unity Floodилка
Строки - это страшно, потому что по своей сути это immutable char[], который делает просто миллиарды аллокаций, если им неправильно пользоваться) Но они супер удобные) Поэтому в большинстве задач - да пофигу. Плюс есть механизмы интернирования и много чего ещё) А вот когда алгоритм со строками работает скажем час благодаря gc, так как там куча сплитов (а csv все парсят через Split(delimeter)) то конечно переписав это в более сложный алгоритм без аллокаций можно выиграть просто дофига времени) Потому что в 0.5 секунды и 0.25 секунды не так много разницы, а точнее там её не будет, так как память так не засрётся, что там пару кб выделенной памяти для современного железа) А разница между 60 минутами и 30 минутами уже существенная)
источник

GD

Grygory Dyadichenko in Unity Floodилка
Просто потому что строки - это достаточно сложная штука, которой надо пользоваться с осторожностью. В Рихтере про них около 50 страниц текста) Чисто по классу System.String :)
источник

GD

Grygory Dyadichenko in Unity Floodилка
Ну хотя там ещё вроде стрингбилдер описывается ещё
источник

АН

Антон Никитенко... in Unity Floodилка
Олег, а Вам биолог не нужен?
источник

E

Egor in Unity Floodилка
источник

E

Egor in Unity Floodилка
источник

L

Lenat_1 in Unity Floodилка
Egor
мой геймджем
источник

С

Стасик in Unity Floodилка
GameObject _testMe;
public void InstantiatePiece(CraftingPiecesGroup group, GameObject currentPiece)
{
       GameObject prefab = group.CurrentPiece.GetPrefab(CurrentPieces);
       currentPiece = Instantiate(prefab, transform.position, new Quaternion(), transform);
}
Передаю в метод вторым параметром _testMe и получаю в _testMe значение null.  И чего это вдруг? GameObject ссылочный тип данных, разве его обязательно нужно передавать при помощи ref чтобы изменить значение в самом поле? Со структурами всё понятно, без ref никак, но классы это ж немного другое.
источник