Serializing Unity objects could be tricky. Can result in very unexpected results when doing a JsonConvert.Serialize on a Vector3. Convert common Unity types to begin with instead of having to make ...
It is computationally expensive to instantiate and destroy objects, such as bullets, that get re-used a lot. Its a lot more performant to instantiate them all and to keep reference and to recycle them ...