TGViewer
Channel Public Channel
Unity: Всё, что вы не знали о разработке

Unity: Всё, что вы не знали о разработке

@unsafecsharp

Авторский канал о разработке в Unity от Alex Silaev (CTO в Zillion Whales). Mushroom Wars 2 моих рук дело.
Рассказываю об интересный кейсах, делюсь лайфхаками, решениями.
Subscribers
1.73K
Photos
40
Videos
0
Links
101

Showing posts older than #142 · Back to latest

Older Posts 20 shown
Post #141 2.86K
Всем привет! В эту субботу (в 16:00 по мск) пройдет лекция про основы современной трехмерной графики от Андрея Короткова (@megadrone86), который имеет 10 лет опыта C++ разработки и 13+ лет опыта в геймдеве.
До того как Unity стал мейнстримом разрабатывал собственный игровой движок: http://dgle.dronprogs.org
Персональный сайт: https://dronprogs.org

Ссылка на регистрацию:
https://unsafecsharp.timepad.ru/event/2491854/

#event
  • 🔥 44
  • 👍 2
  • 🤓 1
Post #140 1.59K
Запись с лекции на тему вёрстки UGUI:

https://youtu.be/6evvmkMwpso

Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90

#event #record
  • 🔥 38
  • 🎉 6
Post #139 1.35K
Быстрый указатель в алгоритмах.

Допустим, что вам нужно найти середину связного списка, как это быстрее всего сделать? Завести 2 указателя, один будет шагать через один элемент, а второй - по каждому элементу. Таким образом когда первый указатель доберется до конца такого списка - второй будет указывать на середину. Так вот первый указатель называют "быстрым".

Недавно встретил такую задачку и хотел бы с вами поделиться:
На вход нашему методу передается некий граф, который содержит ноды вида

Node {
int value;
Node next;
}

Нам нужно найти ноду в этом графе, которая начинает бесконечный цикл.
Например:

1 -> 2 -> 3 -> 4 -> 2

Тут нода со значением 2 начинает цикл.
Если же ноды нет, то метод должен вернуть null.
Решение этой задачи довольно простое, если бы не одно условие: нужно найти решение без использования дополнительной памяти.
Насколько я помню, я встретил ее по теме "какие задачи не нужно задавать на собесах", т.к. если решения ты не знаешь - решить ее практически невозможно, но все равно - подумайте, ну а вдруг 🙂
p.s: задача была задана на собесе в компанию Apple.

#algorithms #interview
  • 🔥 9
Post #138 1.32K
Лекция закончилась, запись будет позже.
Извиняюсь, если не рассказал о каких-то моментах на лекции по ugui, тема достаточно обширная и у нас ушло почти 3 часа на эту тему, хотя даже не закрыли и половину;( Надеюсь, что все равно было интересно, вы для себя нашли что-то интересное и я ответил на ваши вопросы.

Все, кто хотят меня поддержать, могут это сделать тут:
Евро: NL19 BUNQ 2070 8912 32
Доллары: GB45 TCCL 0414 0434 4305 90

#event
  • 👍 20
  • ❤ 9
  • 🔥 4
Post #137 1.36K
Напоминаю, что сегодня в 16:00 по мск обсуждаем UGUI и вёрстку.
  • 🔥 16
Post #136 1.72K
Попадает ли точка в радиус?

Довольно простой вопрос, который решается банальной проверкой (v2.sqrMagnitude <= radius * radius). Мы такой вопрос часто задаем на собесах, но не только для того, чтобы выяснить считает ли человек через квадрат радиуса, а скорее для того, чтобы задать второй вопрос: "а в эллипс?". И вот на этом вопросе люди начинают сами себя закапывать. Кто-то придумывает несуществующие правила и теоремы, кто-то говорит, что мол "да я это не помню, там высшая математика, кому это вообще надо", ну а кто-то предлагает решение.

А самое интересное, что решение довольно простое, которое не требует никаких знаний и формул:
Изменяем Y проверяемой точки на фактор соотношения Rx к Ry, а дальше проверяем на попадание в радиус Rx. То есть мы вытягиваем эллипс таким образом, чтобы он стал кругом и считаем уже относительно круга.

#basics #ellipse #math #lifehack
  • 🔥 17
  • 🆒 5
  • 👍 2
  • ❤ 1
Post #135 1.52K
В чем отличие Generic.List<> от массива?

Такой вопрос мы задавали на собесах. Он помогал нам отсеить и закончить собес на словах "ну лист - это такая штука, где элементы ссылаются друг на друга". Но если человек проходил эту часть успешно (да, такие бывали), то в основном большинстве мы приходили к следующим утверждениям:
- 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
Post #133 1.58K
Следующий евент пройдет в субботу в 16:00 по мск. Будем обсуждать вёрстку, как верстаются интерфейсы, на что обращать внимание.
Регайтесь, будет интересно :)

https://unsafecsharp.timepad.ru/event/2482334/

#event
  • 🔥 34
  • ❤ 2
  • 👍 2
  • 🤔 1
Post #132 1.6K
Запись с последнего урока по Unity Jobs:

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
Post #131 1.42K
У Vector2/Vector3/Vector4 переопределен оператор ==.
Он сравнивает не точное значение, а приблизительное, с учетом погрешности:

var v = new Vector3(0f, 0f, 0f);
var v2 = Vector3.one - Vector3.one;

v == v2


#basics #floats
  • 👍 29
  • 🥱 8
Post #130 1.46K
Довольно долго эта картинка висела у нас в офисе на стене. И да, в целом так оно и было;)

#meme
  • 😁 27
  • 👍 9
  • 🤪 3
Post #129 1.39K
Post #127 1.31K
У нас на интервью был вот такой вопрос одним из последних. Он показывает именно желание думать, если человек не знает на него ответ, конечно.

У вас есть односвязный список и указатель на один из его элементов (не последний), как удалить этот элемент из списка, оставив список целостным? Возможно ли решение за О(1)?

#interview
  • 👍 18
  • 👎 4
  • 👌 2
Post #126 1.34K
Catmull rom - это такая кривая, для построения которой нужно знать 4 точки. Особенность заключается в том, что кривая будет проходить через все 4 точки.

На практике мы такое часто используем, т.к. для построения, например, Безье требуются тангенты, расчет которых иногда затруднителен.

#splines #curve #math #catmullrom
  • 🔥 15
  • 👍 4
Post #125 1.22K
💾 Хоткей дня
Ctrl/Cmd + Shift + P
Нажать на кнопку паузы. Довольно часто мышку использовать не получается (например, если нужно отловить состояние до потери фокуса).

#hotkey #editor
  • 👍 22
  • 🥱 6
Post #124 1.29K
Post #123 1.18K
Ленивый if

Условие всегда ленивое и хочет побыстрее выйти.
Если v1 будет true, то что там дальше его не будет интересовать:

if (v1 == true || v2 == true) {...}

Таким образом, если у нас есть такой код:

var v1 = CalcV1();
var v2 = CalcV2();
if (v1 == true || v2 == true) {...}

Выглядит хоть и симпатично, но совершенно непроизводительно.
Лучше писать так:

if (CalcV1() == true || CalcV2() == true) {...}

Естественнно нужно понимать, что CalcV2 вызываться не будет, если CalcV1 вернет true, поэтому не нужно на это расчитывать. Но я надеюсь, что вы это знаете :)

#code #performance #basics
  • 👍 27
  • 🥱 13
  • 🔥 8
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →