Basics of Optimization in Unity

Let’s say we put a cube in the scene and attach material which color will be modified in Update()

It could generate almost 300B of GC, not that much, but it can be improved

If we change the code like this

It will keep generating GC, why?

Because in Update, we are accesing material, that is a class, a reference type, each frame

Can color also cause GC? The answer is no
Why?
Because color is a struct, a value type

They’re on the stack and don’t require GC from the heap.

New in Color basically “initializes” a color variable in the Color struct, whereas a class (reference type, like Material) variable creates a reference in the heap that generates GC

Other examples of structs in Unity are Vector2 and Vector3

So, would the following example be desirable?

Although it uses struct objects and doesn’t generate GC, it is better to improve the code as much as possible, even more in the Update, it is, to make the code more optimal

In the code above, we are creating just 1 struct object and modifying only its x value, instead of creating 2 new structs each frame.

Tip