Запись с последнего урока по Unity Jobs:
https://www.youtube.com/watch?v=Abp_9x8pX-E
Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90
#event #record
https://www.youtube.com/watch?v=Abp_9x8pX-E
Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90
#event #record
🔥51👍4❤2👏1
Следующий евент пройдет в субботу в 16:00 по мск. Будем обсуждать вёрстку, как верстаются интерфейсы, на что обращать внимание.
Регайтесь, будет интересно :)
https://unsafecsharp.timepad.ru/event/2482334/
#event
Регайтесь, будет интересно :)
https://unsafecsharp.timepad.ru/event/2482334/
#event
🔥34❤2👍2🤔1
В чем отличие Generic.List<> от массива?
Такой вопрос мы задавали на собесах. Он помогал нам отсеить и закончить собес на словах "ну лист - это такая штука, где элементы ссылаются друг на друга". Но если человек проходил эту часть успешно (да, такие бывали), то в основном большинстве мы приходили к следующим утверждениям:
- List<> это такой массив, но с более удобными методами;
- При расширении листа - увеличивается массив x2, а данные копируются;
Но был еще дополнительный вопрос:
Где сломается такой код?
- Нигде
- arr[0].x
- list[0].x
- В обоих случаях
Этот вопрос был не то чтобы прям "отсеивающим", но в большинстве случаев те, кто не мог ответить на этот вопрос, - никогда не писали своих коллекций и никогда не разбирались как устроены существующие.
#interview
Такой вопрос мы задавали на собесах. Он помогал нам отсеить и закончить собес на словах "ну лист - это такая штука, где элементы ссылаются друг на друга". Но если человек проходил эту часть успешно (да, такие бывали), то в основном большинстве мы приходили к следующим утверждениям:
- List<> это такой массив, но с более удобными методами;
- При расширении листа - увеличивается массив x2, а данные копируются;
Но был еще дополнительный вопрос:
Vector3[] arr = ; // 1 элемент или больше
List<Vector3> list = ; // 1 элемент или больше
arr[0].x = 123f;
list[0].x = 123f;
Где сломается такой код?
- Нигде
- arr[0].x
- list[0].x
- В обоих случаях
Этот вопрос был не то чтобы прям "отсеивающим", но в большинстве случаев те, кто не мог ответить на этот вопрос, - никогда не писали своих коллекций и никогда не разбирались как устроены существующие.
#interview
👍21👎2🥱2❤1🔥1
Попадает ли точка в радиус?
Довольно простой вопрос, который решается банальной проверкой
А самое интересное, что решение довольно простое, которое не требует никаких знаний и формул:
Изменяем Y проверяемой точки на фактор соотношения Rx к Ry, а дальше проверяем на попадание в радиус Rx. То есть мы вытягиваем эллипс таким образом, чтобы он стал кругом и считаем уже относительно круга.
#basics #ellipse #math #lifehack
Довольно простой вопрос, который решается банальной проверкой
(v2.sqrMagnitude <= radius * radius). Мы такой вопрос часто задаем на собесах, но не только для того, чтобы выяснить считает ли человек через квадрат радиуса, а скорее для того, чтобы задать второй вопрос: "а в эллипс?". И вот на этом вопросе люди начинают сами себя закапывать. Кто-то придумывает несуществующие правила и теоремы, кто-то говорит, что мол "да я это не помню, там высшая математика, кому это вообще надо", ну а кто-то предлагает решение.А самое интересное, что решение довольно простое, которое не требует никаких знаний и формул:
#basics #ellipse #math #lifehack
🔥17🆒5👍2❤1
Лекция закончилась, запись будет позже.
Извиняюсь, если не рассказал о каких-то моментах на лекции по ugui, тема достаточно обширная и у нас ушло почти 3 часа на эту тему, хотя даже не закрыли и половину;( Надеюсь, что все равно было интересно, вы для себя нашли что-то интересное и я ответил на ваши вопросы.
Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90
#event
Извиняюсь, если не рассказал о каких-то моментах на лекции по ugui, тема достаточно обширная и у нас ушло почти 3 часа на эту тему, хотя даже не закрыли и половину;( Надеюсь, что все равно было интересно, вы для себя нашли что-то интересное и я ответил на ваши вопросы.
Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90
#event
👍20❤9🔥4
Быстрый указатель в алгоритмах.
Допустим, что вам нужно найти середину связного списка, как это быстрее всего сделать? Завести 2 указателя, один будет шагать через один элемент, а второй - по каждому элементу. Таким образом когда первый указатель доберется до конца такого списка - второй будет указывать на середину. Так вот первый указатель называют "быстрым".
Недавно встретил такую задачку и хотел бы с вами поделиться:
На вход нашему методу передается некий граф, который содержит ноды вида
Нам нужно найти ноду в этом графе, которая начинает бесконечный цикл.
Например:
Тут нода со значением 2 начинает цикл.
Если же ноды нет, то метод должен вернуть null.
Решение этой задачи довольно простое, если бы не одно условие: нужно найти решение без использования дополнительной памяти.
Насколько я помню, я встретил ее по теме "какие задачи не нужно задавать на собесах", т.к. если решения ты не знаешь - решить ее практически невозможно, но все равно - подумайте, ну а вдруг 🙂
p.s: задача была задана на собесе в компанию Apple.
#algorithms #interview
Допустим, что вам нужно найти середину связного списка, как это быстрее всего сделать? Завести 2 указателя, один будет шагать через один элемент, а второй - по каждому элементу. Таким образом когда первый указатель доберется до конца такого списка - второй будет указывать на середину. Так вот первый указатель называют "быстрым".
Недавно встретил такую задачку и хотел бы с вами поделиться:
На вход нашему методу передается некий граф, который содержит ноды вида
Node {
int value;
Node next;
}
Нам нужно найти ноду в этом графе, которая начинает бесконечный цикл.
Например:
1 -> 2 -> 3 -> 4 -> 2
Тут нода со значением 2 начинает цикл.
Если же ноды нет, то метод должен вернуть null.
Решение этой задачи довольно простое, если бы не одно условие: нужно найти решение без использования дополнительной памяти.
Насколько я помню, я встретил ее по теме "какие задачи не нужно задавать на собесах", т.к. если решения ты не знаешь - решить ее практически невозможно, но все равно - подумайте, ну а вдруг 🙂
p.s: задача была задана на собесе в компанию Apple.
#algorithms #interview
🔥9
Запись с лекции на тему вёрстки UGUI:
https://youtu.be/6evvmkMwpso
Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90
#event #record
https://youtu.be/6evvmkMwpso
Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90
#event #record
🔥38🎉6
Всем привет! В эту субботу (в 16:00 по мск) пройдет лекция про основы современной трехмерной графики от Андрея Короткова (@megadrone86), который имеет 10 лет опыта C++ разработки и 13+ лет опыта в геймдеве.
До того как Unity стал мейнстримом разрабатывал собственный игровой движок: http://dgle.dronprogs.org
Персональный сайт: https://dronprogs.org
Ссылка на регистрацию:
https://unsafecsharp.timepad.ru/event/2491854/
#event
До того как Unity стал мейнстримом разрабатывал собственный игровой движок: http://dgle.dronprogs.org
Персональный сайт: https://dronprogs.org
Ссылка на регистрацию:
https://unsafecsharp.timepad.ru/event/2491854/
#event
🔥44👍2🤓1
Вот такую задачку мы задаем на собесе, чтобы понять понимает ли человек основы и вообще работал ли он со структурами (или только с классами):
#interview #code
void Method(IInterface obj) {}
public struct S : IInterface {}
public struct A : IInterface {}
void Something() {
Method(new S());
Method(new A());
}
interface IInterface {…}
Но вопрос мы ставим так: «какие проблемы вы видите с этим кодом?». А дальше внимательно слушаем, если ответ типа «ну тут нужно все вообще переписать», то так и будет в вашем прод проекте, все перепишут, а в итоге результата будет ноль;)#interview #code
👍16
В C++ нет дженериков.
Их нет, да, но как тогда работают дженерики, которые мы делаем в C#? Там то они есть;) а мы используем il2cpp почти всегда для продакшена. В итоге под каждый тип, который мы вызываем, будет создан метод. Это стоит учитывать, когда вы создаете дженерик метод и делаете миллион разных вариантов вызовов, то ожидайте код в размере миллиона копипастных методов;)
#cpp #generics #il2cpp
Их нет, да, но как тогда работают дженерики, которые мы делаем в C#? Там то они есть;) а мы используем il2cpp почти всегда для продакшена. В итоге под каждый тип, который мы вызываем, будет создан метод. Это стоит учитывать, когда вы создаете дженерик метод и делаете миллион разных вариантов вызовов, то ожидайте код в размере миллиона копипастных методов;)
#cpp #generics #il2cpp
🔥16👍2❤1
Мы часто используем для редактора поля вида
для того, чтобы в инспекторе перетащить туда папку. Это очень удобно, чтобы не писать константы в коде.
#editor
UnityEngine.Object dir;
для того, чтобы в инспекторе перетащить туда папку. Это очень удобно, чтобы не писать константы в коде.
#editor
🔥57🙉3
Напоминаю, что сегодня пройдет лекция про основы современной трехмерной графики:
https://news.1rj.ru/str/unsafecsharp/141
Регайтесь :)
#event
https://news.1rj.ru/str/unsafecsharp/141
Регайтесь :)
#event
🔥10👍3
Лекция закончилась :( Надеюсь, что было интересно))
По-традиции, запись будет позже.
Пишите свои комменты по этой лекции и по темам, которые вы бы хотели обсудить.
#event
По-традиции, запись будет позже.
Пишите свои комменты по этой лекции и по темам, которые вы бы хотели обсудить.
#event
🔥23😴1
Overdraw опаснее draw call.
Дело касается в основном мобилок, но вообще принцип тот же везде. Overdraw - это по сути метрика, с помощью которой можно понять сколько раз вы закрашиваете один и тот же пиксель. Во-первых, красить пиксель дважды - плохая примета. Во-вторых, видяхи на мобилах довольно слабые и каждый новый проход по одному месту может сильно просаживать производительность.
На практике легко получить такую проблему партикл системой с тысячами частиц. Может казаться, что производительность падает из-за количества частиц, но на самом деле проблема на 99% в overdraw. Кстати, для этого в настройках рендера партикл системы есть параметр, который ограничивает максимальный размер частицы относительно размера экрана, т.к. чем больше площадь - тем хуже. Поэтому 100 больших частиц у камеры хуже, чем 10к, но далеко.
#rendering #overdraw
Дело касается в основном мобилок, но вообще принцип тот же везде. Overdraw - это по сути метрика, с помощью которой можно понять сколько раз вы закрашиваете один и тот же пиксель. Во-первых, красить пиксель дважды - плохая примета. Во-вторых, видяхи на мобилах довольно слабые и каждый новый проход по одному месту может сильно просаживать производительность.
На практике легко получить такую проблему партикл системой с тысячами частиц. Может казаться, что производительность падает из-за количества частиц, но на самом деле проблема на 99% в overdraw. Кстати, для этого в настройках рендера партикл системы есть параметр, который ограничивает максимальный размер частицы относительно размера экрана, т.к. чем больше площадь - тем хуже. Поэтому 100 больших частиц у камеры хуже, чем 10к, но далеко.
#rendering #overdraw
🔥24👍3🤨2
Запись с последней лекции про основы современной компьютерной графики:
https://youtu.be/EiucC4M0VuY
#record #event
https://youtu.be/EiucC4M0VuY
#record #event
🔥42👍2❤1
Умножение vs Деление
Надеюсь, что вы все в курсе, что операция деления выполняется намного медленнее операции умножения. Если нет, то имейте ввиду.
Я часто встречаю вот такой код:
И мне все время хочется такой код написать так:
Еще можно заменять по тому же принципу и любые другие константы. Но что делать, если у нас деление не на константу, а на
#basics #performance #code
Надеюсь, что вы все в курсе, что операция деления выполняется намного медленнее операции умножения. Если нет, то имейте ввиду.
Я часто встречаю вот такой код:
a += b / 2f;
И мне все время хочется такой код написать так:
a += b * 0.5f;
Еще можно заменять по тому же принципу и любые другие константы. Но что делать, если у нас деление не на константу, а на
x? Да все просто, делаем y = 1f / x и используем уже y.#basics #performance #code
🔥26🥴15👍10🤔7👌7❤2💯1😴1