MENU

Fun & Interesting

Data Persistence - Save & load your game state while avoiding common mistakes | Unity Tutorial

LlamAcademy 58,298 3 years ago
Video Not Working? Fix It Now

Learn how to save and load data in Unity - avoiding common mistakes and dangerous serialization techniques many other tutorials will tell you to use! In this video we'll look at using text-based serialization using JSON and optionally encrypt that data. I also discuss some of the pros/cons for using text-based serialization, and what you should use instead if you really want to/need to use a binary serialization technique. Common suggestions that you should absolutely not use to persist game state data are: 1. Player Prefs - these are not designed for storing game state. Only...Player Preferences such as graphic & audio settings. 2. BinaryFormatter - this class is dangerous and insecure. Use of this class can allow an attacker to take over the system. https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide 👨‍💻 As always, all code from this video is available on GitHub: https://github.com/llamacademy/persistent-data/ 🏷️Save 25% on the ultimate C# IDE: JetBrains Rider with code LLAMACADEMY: https://www.jetbrains.com/store/?section=personal&billing=yearly 📚 Resources 📚 ⚫ JSON.Net: https://www.newtonsoft.com/json ⚫ Encrypt/Decrypt Data with AES: https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aes?view=net-6.0 ⚫ Binary Formatter Security: https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide ⚫ Unity JSON.Net Package: https://docs.unity3d.com/Packages/[email protected]/manual/index.html ⚫ Protobuf (BinaryFormatter alternative): https://github.com/protocolbuffers/protobuf ⚫ Protobuf C# Docs: https://developers.google.com/protocol-buffers/docs/csharptutorial ❤ Believe in LlamAcademy's mission and have received value from the videos? Become a Patreon Supporter or YouTube Member: ⚫ Patreon: https://www.patreon.com/llamacademy ⚫ YouTube Member: https://www.youtube.com/channel/UCnWm6pMD38R1E2vCAByGb6w/join or click the Join button on any video 🧡 Believe in LlamAcademy's mission and have received value from the videos? Here's how you can show your support: 🌟 Patreon: https://www.patreon.com/llamacademy 🌟 YouTube Member: https://www.youtube.com/channel/UCnWm6pMD38R1E2vCAByGb6w/join or click the Join button on any video 📚 Take my Unity ShaderGraph Course: https://www.gamedev.tv/p/unity-shader-graph?affcode=45216_kuvg0bp7 👕 Get yourself some LlamAcademy merch: https://llamacademy.myspreadshop.com/ 💸 Use my Affiliate Link for Humble Bundles https://humblebundleinc.sjv.io/9g4ak4 💸 Publisher Sale! 50% OFF an entire publisher's Assets! Publisher changes weekly! https://assetstore.unity.com/publisher-sale?aid=1101l9QvC (affiliate) 💸 Save up to 50% on NEW Assets: https://assetstore.unity.com/?new_sale=true&orderBy=1&aid=1101l9QvC (affiliate) Some links may be affiliate links, which at no additional cost to you, gives me a small portion of the purchase. Chapters: 00:00 What you shouldn't do 01:45 What you should do 03:20 JSON Serialization 04:43 Sample Scene Overview 06:00 Defining IDataService.cs 07:00 Saving Data with JsonDataService.cs 09:33 Saving Data with the DataService in Demo.cs 11:03 Demo Saving Data 11:50 Loading Data with JsonDataService.cs 13:19 Loading Data with the DataService in Demo.cs 14:23 Demo Loading Data 15:36 Encrypting Data in JsonDataService.cs 19:33 Decrypting Data in JsonDataService.cs 22:02 Encryption/Decryption Demo 23:05 Demo Encryption/Decryption Error Handling 23:47 Final Thoughts

Comment