#Практика
URP и источники света
Столкнулся с задачей, где необходимо сделать множество источников света на небольшой площади. Unity "из коробки" сильно ограничивает количество источников. При активации новых светил, старые просто отрубаются, что вызывает ощущения нехватки энергии на их поддержание.
В URP изменения кол-ва света до неограниченного появилось не так давно с версией 2021.2.
Для этого необходимо найти asset URP-"уровень графики"-Renderer. В моём случае он назывался URP-HighFidelity-Renderer. В нём в графе Rendering изменить строку Rendering path на Deferred. И вуаля! Всё заработало!
Если хотите иметь ограничение, но изменить его значение можно поиграть с другим параметром:
Находим URP-"уровень графики" в нём параграф Lighting и меняем значение Per Object Limit (от 0 до 8). Мне этого было мало, но возможно кому-то облегчит жизнь.
Помните, что чем больше источников света, тем больше нагрузка на GPU.
URP и источники света
Столкнулся с задачей, где необходимо сделать множество источников света на небольшой площади. Unity "из коробки" сильно ограничивает количество источников. При активации новых светил, старые просто отрубаются, что вызывает ощущения нехватки энергии на их поддержание.
В URP изменения кол-ва света до неограниченного появилось не так давно с версией 2021.2.
Для этого необходимо найти asset URP-"уровень графики"-Renderer. В моём случае он назывался URP-HighFidelity-Renderer. В нём в графе Rendering изменить строку Rendering path на Deferred. И вуаля! Всё заработало!
Если хотите иметь ограничение, но изменить его значение можно поиграть с другим параметром:
Находим URP-"уровень графики" в нём параграф Lighting и меняем значение Per Object Limit (от 0 до 8). Мне этого было мало, но возможно кому-то облегчит жизнь.
Помните, что чем больше источников света, тем больше нагрузка на GPU.
🔥1
#Теория
Абстрактный класс и метод
Абстрактным классом называется класс, который содержит один или несколько абстрактных методов.
Абстрактный класс не может использоваться для создания объектов.
Как правило, абстрактный класс описывает некий интерфейс, который должен быть реализован всеми его производными классами.
Абстрактный метод языка C# не имеет тела метода и аналогичен чисто виртуальному методу языка C++.
Чем отличается абстрактный метод от виртуального c#?
Абстрактные методы используются для описания методов, которые должны иметь все производные классы, виртуальный же метод предоставляет возможность переопределить метод в производном классе (изменить поведение объекты - через них в C# реализуется классическая форма полиморфизма). Из этого стоит выходить при выборе какой вид метода (абстрактный или виртуальный) нужно использовать.
Виртуальный метод – это метод, который МОЖЕТ быть переопределен в классе-наследнике. Такой метод может иметь стандартную реализацию в базовом классе. Абстрактный метод – это метод, который ДОЛЖЕН быть реализован в классе-наследнике. При этом, абстрактный метод не может иметь своей реализации в базовом классе (тело пустое), в отличии от виртуального.
Абстрактный класс и метод
Абстрактным классом называется класс, который содержит один или несколько абстрактных методов.
Абстрактный класс не может использоваться для создания объектов.
Как правило, абстрактный класс описывает некий интерфейс, который должен быть реализован всеми его производными классами.
Абстрактный метод языка C# не имеет тела метода и аналогичен чисто виртуальному методу языка C++.
Чем отличается абстрактный метод от виртуального c#?
Абстрактные методы используются для описания методов, которые должны иметь все производные классы, виртуальный же метод предоставляет возможность переопределить метод в производном классе (изменить поведение объекты - через них в C# реализуется классическая форма полиморфизма). Из этого стоит выходить при выборе какой вид метода (абстрактный или виртуальный) нужно использовать.
Виртуальный метод – это метод, который МОЖЕТ быть переопределен в классе-наследнике. Такой метод может иметь стандартную реализацию в базовом классе. Абстрактный метод – это метод, который ДОЛЖЕН быть реализован в классе-наследнике. При этом, абстрактный метод не может иметь своей реализации в базовом классе (тело пустое), в отличии от виртуального.
👍1
Я создал свой проект-резюме, в котором привел примеры завершенных мною проектов и их описания.
Рассчитан на ПК, управление стандартное для шутеров или RPG.
Ссылка: https://ssmartproger.ru
Для удобства тех, кто предпочитает читать текст вместо ходьбы по виртуальному пространству, я приложил прямую ссылку на текстовую версию резюме (язык резюме соответствует языку проекта, выбранному в настройках).
Если у вас есть какие-либо комментарии или отзывы по поводу этого проекта, пожалуйста, оставьте их под этим постом.
Рассчитан на ПК, управление стандартное для шутеров или RPG.
Ссылка: https://ssmartproger.ru
Для удобства тех, кто предпочитает читать текст вместо ходьбы по виртуальному пространству, я приложил прямую ссылку на текстовую версию резюме (язык резюме соответствует языку проекта, выбранному в настройках).
Если у вас есть какие-либо комментарии или отзывы по поводу этого проекта, пожалуйста, оставьте их под этим постом.
👍5
#Теория
Ключевого слова partial
Разделяемые классы
Существует несколько ситуаций, когда желательно разделение определения класса.
-При работе над большими проектами распределение класса между различными файлами позволяет нескольким программистам работать с ним одновременно.
-При работе с использованием автоматически создаваемого источника код можно добавлять в класс без повторного создания файла источника. Visual Studio использует этот подход при создании форм Windows Forms, кода оболочки веб-службы и т. д. Можно создать код, который использует эти классы, без необходимости изменения файла, созданного в Visual Studio.
-При использовании генераторов источников для создания дополнительных функциональных возможностей в классе.
Пример:
Подробнее в документации: https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods
Ключевого слова partial
Разделяемые классы
Существует несколько ситуаций, когда желательно разделение определения класса.
-При работе над большими проектами распределение класса между различными файлами позволяет нескольким программистам работать с ним одновременно.
-При работе с использованием автоматически создаваемого источника код можно добавлять в класс без повторного создания файла источника. Visual Studio использует этот подход при создании форм Windows Forms, кода оболочки веб-службы и т. д. Можно создать код, который использует эти классы, без необходимости изменения файла, созданного в Visual Studio.
-При использовании генераторов источников для создания дополнительных функциональных возможностей в классе.
Пример:
public partial class Coords
{
private int x;
private int y;
public Coords(int x, int y)
{
this.x = x;
this.y = y;
}
}
public partial class Coords
{
public void PrintCoords()
{
Console.WriteLine("Coords: {0},{1}", x, y);
}
}
class TestCoords
{
static void Main()
{
Coords myCoords = new Coords(10, 15);
myCoords.PrintCoords();
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
// Output: Coords: 10,15
Подробнее в документации: https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods
Docs
Разделяемые классы и методы - C#
Разделяемые классы и методы в C# разделяют определение класса, структуры, интерфейса или метода между двумя исходными файлами или более.
👍1
С наступающим новым годом! Что б баги были в радость, а релизы в сладость!) Успехов на работе и новых достижений в личной жизни!
🎉2
Новости:
Компания Unity объявила о новом масштабном сокращении — фирма уволит 25% своих сотрудников, речь идёт про 1800 человек на разных позициях. Это уже четвёртое сокращение в компании за последний год, предыдущее произошло в ноябре 2023-го , когда работу потеряло 265 сотрудников.
Решили что нельзя заработать на установках и решили сократить расходы на персонал?...
Компания Unity объявила о новом масштабном сокращении — фирма уволит 25% своих сотрудников, речь идёт про 1800 человек на разных позициях. Это уже четвёртое сокращение в компании за последний год, предыдущее произошло в ноябре 2023-го , когда работу потеряло 265 сотрудников.
Решили что нельзя заработать на установках и решили сократить расходы на персонал?...
https://vk.com/video-173146266_456244796
Когда решил пофиксить баги в легаси проекте
Когда решил пофиксить баги в легаси проекте
Vk
Клава
vk video
😱1
#Практика
Часто встречаю споры по вопросу оптимизации через Update\FixedUpdate\Coroutine и решил создать свой пример где бы были реализованы все эти способы для наглядной демонстрации.
Каждый желающий может скачать этот пример и попробовать на практике как идёт нагрузка на систему в зависимости от используемого метода обновления.
В данной проекте используется перемещение простых кубов через Transform.Translate(). Но при большом кол-ве объектов можно понять какой из методов является самым низко затратным.
Ссылка на проект - https://github.com/Animus-Mortis/Optimization-Models/tree/main
Пользуйтесь на здоровье)
Часто встречаю споры по вопросу оптимизации через Update\FixedUpdate\Coroutine и решил создать свой пример где бы были реализованы все эти способы для наглядной демонстрации.
Каждый желающий может скачать этот пример и попробовать на практике как идёт нагрузка на систему в зависимости от используемого метода обновления.
В данной проекте используется перемещение простых кубов через Transform.Translate(). Но при большом кол-ве объектов можно понять какой из методов является самым низко затратным.
Ссылка на проект - https://github.com/Animus-Mortis/Optimization-Models/tree/main
Пользуйтесь на здоровье)
GitHub
GitHub - Animus-Mortis/Optimization-Models
Contribute to Animus-Mortis/Optimization-Models development by creating an account on GitHub.
👍2