Jump to content

Как я изучаю Unigine )


photo

Recommended Posts

Если позволите, то тут буду писать процесс. А то в дискорде не удобно, а тут хоть на память останется.

Первое что сделал, это пример из доки Быстрый старт для программистов Все прошло успешно, единственно надо постараться не пропускать код между

= NEW - BEGIN == 

и

== NEW - END =

Если при компиляции ошибки, скорее всего что-то пропущено. И, главно, не забывать сохраняться в UNIGINE Editor, а само приложение запускать из ВизуалСтудии, я, например, долго тупил, запуская из браузера и думая, чего оно не работает.

На следующем шаге я полазить по инету в поисках примеров. Их не очень много, но на ютубе нашел пару видео с выложенными исходными кодами. Больше всего понравился проект Alien Ameer который на данный момент и изучаю.

 

Edited by Didgik
Link to comment

Тут возникло много сложностей с миграцией, так как проект сделан на версии 2.11.0.2 sim.

Основные правки по коду не большие. Но возникла проблема с материалами. Раньше использовалось имя материала, а теперь гуид. Само сконвертироваться не захотело, поэтому пришлось создать материал, в текстовом редакторе вытащить из него гуид и вставить вместо названия в старый. Может есть нормальный способ, но сходу не нашел. Вторая проблемы в том, что в данном проекте использовалась перегрузка ComponentSystem.

На данный момент затык в том, что используются PROP_ARRAY  и они передаются дальше в классы, не наследованные от ComponentBase.

Пока я выкрутился тем, что копирую массивы в вектора вот так:

class PlayerManager : public ComponentBase
{
public:

	//Mesh
	PROP_ARRAY(File, MeshFile, "MeshFile", "", "Player");
	PROP_ARRAY(Material, MaterialFile, "MaterialFile", "", "Player");
  	PROP_ARRAY(File, AnimFile, "AnimationFile", animToolTips, "Animations");
	PROP_ARRAY(Float, AnimFPS, "AnimationFPS", animToolTips, "Animations");
}
void PlayerManager::init()
{
	Vector<ComponentVariableFloat> animFPS;
	Vector<ComponentVariableFile> meshFile;
	Vector<ComponentVariableFile> animFile;
	Vector<ComponentVariableMaterial> materialFile;

	for (int i = 0; i < AnimFPS.size(); i++) 
		animFPS.append(AnimFPS[i]);

	for (int i = 0; i < MeshFile.size(); i++)
		meshFile.append(MeshFile[i]);

	for (int i = 0; i < AnimFile.size(); i++)
		animFile.append(AnimFile[i]);

	for (int i = 0; i < MaterialFile.size(); i++)
		materialFile.append(MaterialFile[i]);
}

Ну как выкрутился. Программа запускается и работает, но работает не правильно ) Значения параметров приходят пустые. Точнее, например в отладчике простые типы float и string я вижу, а значения типов Unigine я увидеть не могу. 

Сейчас буду изучать этот вопрос.

 

Link to comment

Вух, заработало!

Глупость, но оказывается раньше было materialFile[j]->getName(), а сейчас не materialFile[j]->geManualName() как можно было подумать из доки, а materialFile[j]->getPath(); Сходу не понятно, может в Изменения материалов пару строк в пример кода ввести для тупых, или я один такой?

В общем мешу присваивался материал с пустой строкой и объект становился совсем невидимым )

Link to comment
×
×
  • Create New...