Jump to content

Передача данных


photo

Recommended Posts

Posted (edited)

Прикрепил я к ноде несколько .cpp, с наследованием ComponentBase. Вопрос как мне предавать данные из одного cpp в другой, есть какое-то подобие сигналов-слотов как в Qt? Или как создать одну глобальную переменную для двух этих Node Properties ?

Prop.png

Edited by Kumkurum
Link to comment

День добрый, 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 и так далее.

С уважением,
Александр

  • Thanks 1
Link to comment

А каким образом обратиться к Node Properties из AppWorldLogic??? То есть как установить значение извне?

Link to comment

А каким образом обратиться к Node Properties из AppWorldLogic?
1) Находите ссылку на нужную ноду (например, через Node n = World.GetNodeByName()).
2) Используя Компонентную Систему достаете интересующую компоненту: LabelData ld = ComponentSystem.GetComponent<LabelData>(n);

Link to comment
×
×
  • Create New...