kiraio Posted December 21, 2022 Share Posted December 21, 2022 Remove Unity Splash Screen Introduction Updated version can be found here: https://github.com/kiraio-moe/remove-unity-splash-screen Do you hate this logo appears when you are going to play games? Bother? For some people, yes. This time I will share one of the things I learned when I Reverse Engineering the Unity game, removing the Unity splash screen XD. I haven't tried on some platforms because I haven't installed the dependencies needed to build games on those platforms in Unity, maybe I'll try them in the future. But if you manage to remove the Unity splash screen using another version of Unity with different platforms, please make a Pull Request or contact me on my social media and let me know the details so I can get it straight away updating this article. Without further ado, let's do it! Prerequisite Install the following tools before proceed to Step-by-step section: General Unity Asset Bundle Extractor (UABE) HxD Hex Editor Platform Specific Install the following tools if you wanna work with another platform: Android APKTool GUI WebGL Coming soon... I guess? Step-by-step I don't know how games built with IL2CPP looks like on PC platforms. If you don't mind, please create a Dummy project and build with IL2CPP scripting backend and send the build to me via email: [email protected] . I'll try playing with it ;) PC (Mono) Prepare the Unity game that has been built. Go to the Game Name_Data folder and backup the globalgamemanagers file in case of errors. Open the globalgamemanagers file using Unity Asset Bundle Extractor (UABE). Click globalgamemanagers (Assets) in Files and Components. Select Unnamed asset which is of type PlayerSettings then click View Data and... BOOM! Error................ This happens in games using Unity version >= 2020 where it seems Unity has encrypted (probably) the PlayerSettings part but not the other part. Whereas when I try to open the PlayerSettings section of the game built using Unity 2019, UABE can still access it. We will fix the problems in the Unity 2020 version later. For now, let's focus on games built using Unity <= 2019. As you can see, we can access PlayerSettings. If we change the value of m_ShowUnitySplashScreen to false (by double clicking) then the Splash Screen will not appear when starting the game (the Made with Unity logo will also not appear automatically) and as you can guess, if we change the value of m_ShowUnitySplashLogo to false then the Made with Unity logo will not appear. But, just removing the Made with Unity logo will not work if the Made with Unity splash logo is still listed in m_SplashScreenLogos. To fix this, we can simply delete the array item that contains the Made with Unity logo. Great! Now let's move on to other settings. Move to Asset List and open BuildSettings: Select hasPROVersion and change the value to true: Save your changes (IDK why Apply does nothing). UABE cannot overwrite the file being edited, so just save it as globalgamemanagers-mod. Close globalgamemanagers on UABE or simply close UABE app, delete the original globalgamemanagers file (Remember! you have a backup, don't worry...) and rename globalgamemanagers-mod to globalgamemanagers. Try running the game and be surprised! Fix for Unity >= 2020 If you've read all the steps above, you should know what the problem is, UABE can't deserialize PlayerSettings on Unity >= 2020 because it's encrypted (probably). That's why the Hex Editor is coming for! Make sure you meet the prerequisite! Open globalgamemanagers file using HxD. Look for Decoded Text which contains Company Name and Product Name (in my case it's offset: 1060). Notice the first Question Mark (?) after the product name, right after that there's a hex value 01 01 (highlighted). If you change the hex value of the first 01 to 00 then the Splash Screen will be disabled, while the following 01 sets whether the Made with Unity logo will appear or not. If you don't want Made with Unity to appear, just change it to 00. Boolean Splash Screen (m_ShowUnitySplashScreen) was discovered by the YouTube channel Awesomegamergame in his video https://www.youtube.com/watch?v=xvh0AeZCX9E. But the way he just change the Splash Screen boolean value to false doesn't work in other versions of Unity. I think this article as a complement to the tutorial. After changing the Splash Screen boolean, now change the m_hasPROVersion boolean exactly like the method above. Android (Mono, IL2CPP) Prepare a Unity Android game. Open APKToolGUI (Make sure you meet APKToolGUI requirements). Drag and Drop the APK file (which you guys think is the main APK, in my case base.apk) to the APK Files section. APKToolGUI will automatically decompile the APK. Go to the decompiled APK folder and go to assets/bin/Data folder, you will find the globalgamemanagers file. Do the same as in PC (Mono) section. After finish editing globalgamemanagers, go to APKToolGUI and re-compile the decompiled APK folder. DONE! For those who have uploaded the game to the App Store (such as Google Play), make sure to sign your APK consistently. If not, when you update your game that is already installed on Android, an error Signature is inconsistent with an existing application will appear. For new apps, it might be time for you to start signing APKs consistently. You can generate Keystore in Unity, go to Project Settings > Publishing Settings. Notes There is no difference affecting the splash screen in the globalgamemanagers file between Development builds and Release builds. Yep, that's my Android game I used as a test subject. You can see find it at Google Play Store XD (Pssttt... a remake is in the works). Result Tested and work on games built with the following versions of Unity: Unity 2020.3.39.26224 (LTS) PC/Windows x86_64 (Mono) Android (Mono, IL2CPP) Unity 2019.4.12f1 (LTS) Android (Mono, IL2CPP) Worked? Please give it a star and tell everyone on Pull Request. Something is missing? Make an Issue. Huge Thanks Many thanks to this fellas: SeriousCache for Unity Asset Bundle Extractor (UABE) Maël Hörz for HxD Hex Editor iBotPeaches for Apktool CLI INF1NUM | AndnixSH for APKToolGUI Awesomegamergame for discovering splash screen offset and others that I didn't mention... Disclaimer By doing this, of course you violate the applicable terms of Unity. #DWYOR! 1 Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.