Upgrading 3.x project to 4.x is a right mare!

Finally upgraded Unity to 4.3.3 and first thing I did was to load a previous working 3.5.7 game into it. Well what a nightmare!
First it failed on the auto upgrading project, it stopped a minute in with an error complaining about a prime31 plugin. Basically nothing seemed to have been imported, c# files wouldn’t open, no asset would preview in the inspector until I manually reimported it.

On a hunch I reimported the plugins folder where the Prime31 stuff was, and this worked and the editor then started to reimport the whole project again on it’s own but hours later wouldn’t finish the task just seemed to be stuck in a look reimporting the same thing over and over again.

I force quit unity, deleted the copy of the project and started again. This time I manually reimported the plugins folder first and about 10 minutes later the whole project had managed to upgrade itself. Great I thought all done, that was easy….Well what a muppet I was thinking it would be that easy. I’m now noticing strangeness all over my game. Meshes buggered up which I can cure by toggling off the optimise mesh option.

But the worst thing Ive discovered is that any game object I’d created in 3.x by duplicating another game object and then changing things in it, have all been renamed to the original game objects name with all messed up parameters. for example I had a game object called FireTorpedo, I needed a FireMine game object that was identical except for position and mesh, so I duplicated FireTorpedo and renamed the copy FireMine. After upgrading the project into 4.x the FireMine object has been renamed FireTorpedo so now there are 2 the same name, BUT most importantly all the settings are buggered up. Transforms wrong etc.

Just a warning, for anyone upgrading, you are going to have to go through every game object in your game and check it manually to make sure it’s ok.

I’ve updated 4-5 projects from Unity 3 to Unity 4 and none of them had any particular issues, aside from API changes (mostly .active to SetActive). I even imported a Unity 2.6 project into 4.3 and there was surprisingly little work involved in the update.

–Eric