Notebook: GameLab – Telegram
Notebook: GameLab
32 subscribers
247 photos
1 video
1 file
16 links
Полевая записная книжка разработчика игр
https://news.1rj.ru/str/AnimusMortis
Download Telegram
🔥3
#Практика

Часто встречаю споры по вопросу оптимизации через Update\FixedUpdate\Coroutine и решил создать свой пример где бы были реализованы все эти способы для наглядной демонстрации.
Каждый желающий может скачать этот пример и попробовать на практике как идёт нагрузка на систему в зависимости от используемого метода обновления.
В данной проекте используется перемещение простых кубов через Transform.Translate(). Но при большом кол-ве объектов можно понять какой из методов является самым низко затратным.

Ссылка на проект - https://github.com/Animus-Mortis/Optimization-Models/tree/main

Пользуйтесь на здоровье)
👍2
Стану тим лидом - куплю)
😁2👍1
#Практика

Для создания списка с возможностью выбора нескольких вариантов можно использовать Flags:

[System.Flags]
public enum TypeBuild
{
None = 0,
FirstType = 1 << 1,
SecondType = 1 << 2,
BestType = 1 << 3,
}
👍1🔥1
Когда платят за количество строк, а не за "качество" кода
😭2👍1
🤣3😁1
😁2🤣1
👍3
😱2😭1
❤‍🔥1🙈1
😁1
#Практика
Одним из самых недооцененных настроек игрока в unity является использование инкрементального GC.

Его включение уменьшает заикание частоты кадров за счет распределения сборки мусора по нескольким кадрам, что приводит к более плавному игровому процессу.
🔥1
#Практика

Оказывается если в Canvas перевернуть картинку в RectTransform по Ratation X на 180, то перестаёт работать Raycast Target.

Кто-то понимает как это работает? )
#Теория
TaskCompletionSource<TResult>
Представляет сторону производителя Task<TResult> без подключения к делегату, предоставляя доступ к стороне потребителя через свойство Task.
Во многих сценариях полезно разрешить Task<TResult> представлять внешнюю асинхронную операцию. TaskCompletionSource<TResult> предоставляется для этой цели.

Пример:
private async Task<Sprite> GetIcon(int id)
{
Sprite icon = _defaultIcon;
if (id > 0)
{
var tcs = new TaskCompletionSource<Sprite>();

GetSpriteFromBundles bundles = new GetSpriteFromBundles();
bundles.GetIcon(id, sprite =>
{
if (sprite != null)
tcs.SetResult(sprite);
else
tcs.SetResult(_defaultIcon);
});

icon = await tcs.Task;
}
return icon;
}
🔥1
😁1
Поймал баг в Manor Lords - играю за святого барона, который ходит по воде)
👍1
Когда принялся за глобальный рефакторинг проекта
Когда жена не пустила домой после пьянки
(Medieval Dynasty)
😁2
Охрана не спит...
(Medieval Dynasty)