> What is non-unity mode
By default, UBT will combine several .cpp files into a single one. This reduces compile times when building the whole Engine as less files and include headers need to be processed. This is called a ‘unity’ build.
The downside is that, by gobbling several files together, it is easy to mask missing include dependencies. Even though you might have forgotten to include a required header or forward declaration, if the right files get combined in just the right order, everything will still work. However, as your code base evolves, it can happen that suddenly different files are getting combined. You might have just added one line of code in one file, and suddenly something else in a completely unrelated file module fails to compile.
Non-unity compilation means that UBT will not combine any files and process every compilation unit separately, like most compilers and IDEs do.
I have not measured if there is any performance difference when modifying only a few times at a time. Personally, I always use non-unity builds, because I work on many systems and platforms in parallel, and I need to ensure that everything compiles everywhere and under all circumstances. Almost all other developers at Epic Games use unity builds, however (much to my frustration, because I constantly have to fix their missing include statements and forward declarations ;)).