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_BINDINGSno 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.dllsã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 binariesmarcada, 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
.aarao invés dos arquivos.sodiretamente. 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 structs como parâmetros, então tem que sempre ficar criando uma variável com a struct e depois passando viarefnas chamadas. Pelo menos os callbacks todos aceitam delegates de C# direto.