dev16

Jakoś tak się porobiło, że ludzie od enviro siedzą w blueprintach. Tzn. z jakiegoś powodu też materiał nazywają shaderem, a blueprinty programowaniem. I czasem człowiek potrzebuje wywołać sobie cośtam co naszyli w tych blueprintach z poziomu C++ i co wtedy.

Metoda najszybsza to funkcja. A tak naprawdę event.

UFUNCTION(BlueprintCallable, Category = "CallingStupidBlueprint")
    void CallingStupidBlueprint();

i definicja:

void NaszaKlasaGdzieJestFunkcja::CallingStupidBlueprint()
{
//funkcja moze być pusta
}

A potem już tylko:

Czy można sobie zrobić to lepiej? A może tak event?

UFUNCTION(BlueprintImplementableEvent, Category = "Decisions")
    void CallingStupidBlueprint2();

To myślę jest bardzo fajnie wygodne, ja “pichcę” coś takiego jeszcze w postaci console command, więc na development buildzie mam od razu jeszcze zbindowane jako polecenie konsoli.

Po co taka zabawa? Logi jako takie są fajne, warto zawsze logować sobie wywoływanie funkcji, ale przede wszystkim obsługę błędów, im bardziej rozbudowana, tym szybciej i precyzyjniej dostaniemy zwrotkę o problemie.

Console commands są moim zdaniem lepszym rozwiązaniem niż klepanie jakiegoś interfejsu w widgetach. Są też dużo precyzyjniejszym “raportem” danych niż liniowość loga (która oczywiście też sporo daje), ale wyobraźcie sobie sytuację, klasa przekazuje jakieś dane do innej klasy, oba procesy logujemy, jednak w wyniku jakiejś operacji, która nie jest logowana następuje zmiana danych. Błąd wynikający np. ze zmiany w enumeratorze czy strukturze, Unreal Engine potrafi wtedy walnąć fajną woltę i zamienić enum na… byte. Niby to samo, ale to potrafi się tak rozpiąć przecudownie, że mamy gdzieś zero w danych. I kod sie kompiluje, dopiero jak wejdziemy w ten konkretny blueprint z błędem w nodach (! znowu blueprint :P) i spróbujemy go skompilować to wywali błędy.

O console commands jeszcze kiedyś napiszę, jest to dość mizernie opisane przez Epic’a w dokumentacji, skutkiem tego ciągle czytam jakieś pytania o to na forach. Tzn. już przestałem czytać te pytania, bo to jest nielogiczne – ja czytam i pytanie i dokumentację, a ktoś tylko chce przeczytać odpowiedź.

W Nemesis był dzień grafiki. Zabawa z AI, Photoshopem i Google Translate.