Kumkurum Posted May 19, 2022 Share Posted May 19, 2022 (edited) Прикрепил я к ноде несколько .cpp, с наследованием ComponentBase. Вопрос как мне предавать данные из одного cpp в другой, есть какое-то подобие сигналов-слотов как в Qt? Или как создать одну глобальную переменную для двух этих Node Properties ? Edited May 19, 2022 by Kumkurum Link to comment
alexander Posted May 20, 2022 Share Posted May 20, 2022 День добрый, Kumkurum! Вопрос как мне предавать данные из одного cpp в другой В C# с этим более удобно. В C++ чуть менее очевидно. Если хотите передавать данные из компоненты A в компоненту B, то: class B: public Unigine::ComponentBase { public: /* ... */ int i = 5; void func(float f) {} }; class A: public Unigine::ComponentBase { /* ... */ PROP_PARAM(Node, node_with_B); void update() { // берем указатель на компоненту B, лежащую на ноде node_with_B, // которую вы указываете в редакторе B *b = getComponent<B>(node_with_B); // передаем данные / вызываем функции / меняем переменные // компоненты B b->i = 10; b->func(0.5f); } } Eсть какое-то подобие сигналов-слотов как в Qt? У нас есть Unigine::CallbackBase и Unigine::Signal, но это немного не то: https://developer.unigine.com/en/docs/2.15.1/api/library/common/class.signal?rlang=usc Или как создать одну глобальную переменную для двух этих Node Properties ? Вот здесь вопрос не понял, если честно. На скрине вижу 4 проперти. О чем именно речь? Если говорить про глобальные переменные в целом, то в C++ вы же можете использовать ключевое слово static в своих классах. Помимо этого, можете использовать паттерны Singleton, Service Locator и так далее. С уважением, Александр 1 Link to comment
Kumkurum Posted May 20, 2022 Author Share Posted May 20, 2022 А каким образом обратиться к Node Properties из AppWorldLogic??? То есть как установить значение извне? Link to comment
alexander Posted May 20, 2022 Share Posted May 20, 2022 А каким образом обратиться к Node Properties из AppWorldLogic? 1) Находите ссылку на нужную ноду (например, через Node n = World.GetNodeByName()). 2) Используя Компонентную Систему достаете интересующую компоненту: LabelData ld = ComponentSystem.GetComponent<LabelData>(n); Link to comment
Recommended Posts