Serializing is the process in which a binary object (i.e. a class or a struct) is converted to a binary stream. Deserializing is the process in which an object is created from a binary stream. In layman’s terms, this is just a fancy schmancy way to say that a class or a struct is Saved and then Loaded from memory (be it virtual memory or an actual file on disk).
Warning: This does not necessarily mean that serialization is only used when you’re trying to save or load the game to or from a disk! If you’re not planning to have that in your game, it doesn’t make this article any less important. The fact is, Unity serializes and deserializes data all the time, so you have already used serialization whether you’ve realized it or not. And, if you don’t know what you’re doing, serialization can fail when you need to use custom classes (or even many default .NET classes), leading to very strange errors which seemingly come out of nowhere.
You might have noticed that, for some meshes, calling Unity’s built-in function to
RecalculateNormals(), things look different (i.e. worse) than when calculating them from the import settings. A similar problem appears when recalculating normals after combining meshes, with obvious seams between them. For this post I’m going to show you how
RecalculateNormals() in Unity works and how and why it is very different from Normal calculation on importing a model. Moreover, I will offer you a fast solution that fixes this problem.
This article is also very useful to those who want to generate 3D meshes dynamically during gameplay and not just those who encountered this problem.
The current state of 2D in Unity is currently a bit underdeveloped, due to the fact it was only recently released. After all, Unity is still primarily a 3D engine. One of the obvious things that are missing right now is the ability to have tiled sprites. As of version 4.5.4, you cannot do that out of the box without some nasty trickery. Current solutions you find online will usually have you replicate a sprite multiple times, but that’s far from the best solution; a Sprite is not just an image, it’s its own entity that comes with additional overhead.