Didgik Posted April 17, 2022 Share Posted April 17, 2022 (edited) Если позволите, то тут буду писать процесс. А то в дискорде не удобно, а тут хоть на память останется. Первое что сделал, это пример из доки Быстрый старт для программистов Все прошло успешно, единственно надо постараться не пропускать код между = NEW - BEGIN == и == NEW - END = Если при компиляции ошибки, скорее всего что-то пропущено. И, главно, не забывать сохраняться в UNIGINE Editor, а само приложение запускать из ВизуалСтудии, я, например, долго тупил, запуская из браузера и думая, чего оно не работает. На следующем шаге я полазить по инету в поисках примеров. Их не очень много, но на ютубе нашел пару видео с выложенными исходными кодами. Больше всего понравился проект Alien Ameer который на данный момент и изучаю. Edited April 17, 2022 by Didgik Link to comment
Didgik Posted April 17, 2022 Author Share Posted April 17, 2022 Тут возникло много сложностей с миграцией, так как проект сделан на версии 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
Didgik Posted April 18, 2022 Author Share Posted April 18, 2022 Вух, заработало! Глупость, но оказывается раньше было materialFile[j]->getName(), а сейчас не materialFile[j]->geManualName() как можно было подумать из доки, а materialFile[j]->getPath(); Сходу не понятно, может в Изменения материалов пару строк в пример кода ввести для тупых, или я один такой? В общем мешу присваивался материал с пустой строкой и объект становился совсем невидимым ) Link to comment
Recommended Posts