A integração com Unity se dá por meio do SDK C#, que pode ser baixado diretamente do portal da Epic.
-
É necessário remover ou ignorar a pasta
Samples
, pois eles definem classes C# com nomes duplicados. -
Se estiver usando a Unity num computador macOS, é necessário comentar a linha
#define EOS_DYNAMIC_BINDINGS
no arquivo SDK/Source/Generated/Bindings.cs, pois a biblioteca nativa do macOS não foi compilada com suporte a carregamento dinâmico. Como os bindings dinâmicos já foram desligados, não precisamos fazer o Hook dinâmico no editor no Windows como recomenda a documentação. -
As bibliotecas
xaudio2_9redist.dll
são para Windows e precisam ser configuradas de acordo, para não serem consideradas nas builds Android e iOS e quebrá-las. -
O framework nativo do iOS precisa da flag
Add to embedded binaries
marcada, ou a aplicação não inicializa corretamente -
É necessário escolher somente uma das versões da biblioteca nativa para Android e apagar as outras. Minha sugestão é utilizar o arquivo
.aar
ao invés dos arquivos.so
diretamente. Num teste rápido, eu só consegui fazer a build com a versão “static-stdc++”, mas deve ser possível utilizar a versão “dynamic-stdc++” se linkar a libstdc++ na invocação do ndk. A diferença de tamanho nas bibliotecas nativas é bem pequena, então parece ok usar qualquer uma das versões. -
Na build Android, é necessário importar a biblioteca nativa
androidx.security:security-crypto:1.0.0
. Minha sugestão é utilizar External Dependency Manager for Unity para essa inclusão. Exemplo de arquivo de configuração:<dependencies> <androidPackages> <androidPackage spec="androidx.security:security-crypto:1.0.0" /> </androidPackages> </dependencies>
-
Na build Android, é necessário fazer uma inicialização nativa do SDK manualmente para que ele consiga utilizar o keychain do dispositivo. Referência: https://eoshelp.epicgames.com/s/question/0D54z00006ufJBNCA2/cant-get-createdeviceid-to-work-in-unity-android-c-sdk
No Android, o EOS SDK aumentou em ~10MB por arquitetura o tamanho dos APKs gerados. Ou seja, o APK universal ARMv7 + ARM64 aumentou ~20MB.
No iOS, o pacote IPA aumentou em ~8MB e o app descomprimido ~20MB.
- O SDK C# é autogerado a partir do SDK C, então o uso é um tanto quanto baixo nível. Todos os métodos recebem
ref struct
s como parâmetros, então tem que sempre ficar criando uma variável com a struct e depois passando viaref
nas chamadas. Pelo menos os callbacks todos aceitam delegates de C# direto.