Marsik Posted June 22, 2023 Share Posted June 22, 2023 Здравствуйте, имеется ли возможность принудительно инициализировать компонент и не ожидать следующего кадра ? Заранее спасибо. Link to comment
moody_pooch Posted June 23, 2023 Share Posted June 23, 2023 Добрый день, Marsik! Не могли бы Вы, пожалуйста, уточнить: Вы в update() добавляете какой-то ноде компоненту (например, через ComponentSystem::get()->addComponent<MyComponent>(my_node);) и хотите, чтобы эта компонента сразу в этом же кадре инициализировалась для какой-то дальнейшей работы с её ресурсами также в этом кадре? В таком случае, если вы работаете с update() в WorldLogic, компонента инициализируется и вызовет свой первый update до того, как WorldLogic вызовет postUpdate(). Таким образом, если Ваша логика позволяет, Вы можете обработать новую компоненту после её инициализации в postUpdate(). Независимо от того, в update WorldLogic или другой компоненты Вы работаете, вы можете принудительно инициализировать компоненту, явно вызвав у нее метод init() следующим образом: ComponentSystem::get()->getComponent<MyComponent>(my_node)->init(); Однако стоит учесть два момента: Если метод init() указан, как логический метод компоненты (т.е. вызывается COMPONENT_INIT(init)), то после явной инициализации компоненты, у неё повторно вызовется init() уже неявно после update, в котором Вы эту самую компоненту добавили. Тогда может потребоваться учесть этот момент при написании метода инициализации компоненты, чтобы случайно не продублировать какие-то данные (например, добавить в компоненту флаг, указывающий на то, что инициализация уже произошла). Если метод init() не являестя логическим методом компоненты (т.е. COMPONENT_INIT(init) не вызывается), то повторного вызова init() не будет, однако для каждой такой компоненты Вам придется явно вызывать инициализацию самостоятельно на этапе создания компоненты. Добавление более удобного способа принудительной инициализации компоненты есть в планах на дальнейшие версии, однако сейчас доступны только варианты, описанные выше. Link to comment
Marsik Posted June 26, 2023 Author Share Posted June 26, 2023 Здравствуйте, я добавляю к какой-то ноде компонент в методе init и хотелось бы сразу иметь доступ к её ресурсам. Ваш ответ меня в полне устраивает, спасибо. Link to comment
Recommended Posts