So what would be best way handle deep cloning a class instance in Unity. In normal C# it is easy to handle, but Unity there gonna be problems if you have Transform, GameObject or any kind of Unity’s own Objects inside class? So your thoughts / Solutions in this problem!
Look into internal Unity serialization. Bunch of resources about it out there. This is the only “abnormal” thing about Unity that you need to consider to my knowledge. Also you need to remember that C# in Unity runs on the Mono platform rather the standard CLR from Microsoft but I don’t see how that would be a problem. I’m sure no expert and might very well be missing something obvious here but it should at least get you started.
Thing is Unity has it’s own non-standard serialization because you code your scripts in C# but internally it all runs on C++ and so it pretty much serializes everything internally. There is some funny business involved from what I recall when it comes to things like GameObject pointers etc. Never really worked with it just done some reading.
Perhaps what you could try is somewhat what Daniel suggested. I think there some serialization event hooks you can tap to manually handle serialization of your data. You could try using them and do the standard deep clone for all your non-Unity fields and call Instantiate for all the GameObject type fields.This way you leave it up to Unity and don’t have to worry about what happens internally.
EDIT: “serialization callbacks” more specifically:
Check this out: http://whydoidoit.com/unityserializer/
It serializes GameObjects and all kinds off Unity specific stuff and it’s free. Don’t know if you get the full source code though.