New! Unity Merge for merging scenes and GameObjects

Howdy folks!

We’ve released one of our stupendous editor extensions, and it was just accepted to the Asset store! If you’ve ever struggled with manually merging GameObjects between scenes or prefabs, suffer no more! Unity Merge provides a powerful, easy-to-read interface to compare and merge gameObjects. Check out more on Unify and AssetStore.

1287841--59023--$8a73c994-4f8b-462f-8558-6190cb62116d_scaled.jpg

demo?

Demo coming soooooon. You can pretty much guess what it does from the screenshots, and reading the documentation

Umm their seems to be no screenshots buddy.

Nowai. Here’s one from the store page, and one from the wiki.

Update: We’ve submitted a version compatible with Unity 3. Had the following issues:

  • MaskField not supported, switched to GenericMask for component filtering
  • Minor semantic changes, switching to old deprecated methods (new versiond don’t exist in Unity 3 API)
  • Some SerializedProperty comparisons and set operations weren’t supported. Need to figure out how to get them back

The rest weren’t issues, but for posterity, I’ll explain a bit more. For one thing, I started with the goal of Unity 3.0 compatibility. This meant that I had to downgrade the entire project I was using for submission and that the two prefabs and GUISkins were converted to binary. I ended up having to switch out a bunch of ObjectField calls because I added the AllowSceneObjects parameter to avoid compiler warnings. Likewise, there were a couple of newly-deprecated functions I had to swap out.

Detecting whether the editor was in the editor skin was fun. Just had to look that one up.

Finally, however, the main change was to a comma-separated string for component filtering, instead of the big block of drop-downs. It will tell you whether your string works (whether your classes are named right or are actual components), but this seems to be our only recourse in lieu of the MaskField GUI control. Someone on IRC suggested GenericMenu, so I’ll look into that.

Once I got everything working again, it was time to submit. Hoo boy. So for one thing, I had forgotten that Unity didn’t have AssetStore until 3.1. Especially considering this fact, I was surprised by the fact that you guys pick the minimum platform by the version of Unity you use to submit the app. Aside from the obvious inconvenience of having both versions of Unity installed, I think this method is a little problematic.

For one thing, the AssetStoreTools won’t work on Unity 3.2 (at least for me). I get an error about the window not existing, and don’t see it when I open up the assembly. Even when I go to Unity 3.3, I have to reimport the assembly to get it to work.

Also, since I’m tracking my code with a git repository, the constantly changing meta files are a bit of an issue. Anyway, it’s finally submitted, so you U3 users are all set!

Oh and also, please post any issues you find here. I’ll be the first to admit that the comparator and copy feature will fail on certain property types (GUIStyles are one known issue) due to some weirdness in SerializedProperty. I’m not convinced that it’s UT’s fault, but I haven’t quite gotten a “perfect” situation going. As you might imagine, there are a LOT of edge cases when you’re dealing with “any old object”

Name now changed to UniMerge to avoid confusion (not developed by UT)

Awesome development, I’m very curious about this tool’s workflow.
Can’t wait to try out the demo :slight_smile:

Hi Scone,

I am trying your demo on Unity 4.2, but the tool looks different from your screenshot (rather confusing window).
It seems there are some textures missing. :face_with_spiral_eyes:

EDIT: Also, merging scenes crashes Unity.
EDIT2: Skin problem is known issue, fixed with http://wiki.unity3d.com/index.php/Unity_Merge#Known_Issues

A follow-up on my edit above: the crash seems to appear when Deep Copy is checked. But when the skin problem appears (every start-up!) this option can’t be unchecked until the Skin issue is solved.

This makes it a very sluggish and buggy process.

Also after merging, instead of a truly merged scene, the “mine” scene (In this case Demo) does not just contain merged game-objects, but 2 new and identical empty gameObjects: “mine” and “theirs”. Are we missing something here, or is this really what is supposed to happen? That would mean that after merging you still have to drag around gameObjects by hand, just to get your own hierarchy back.

1316446--62211--$Schermafbeelding 2013-08-01 om 12.02.16.png

To be honest, while this plugin is a good idea and has great potential, currently it is very much unfinished and imo should not be for sale yet.

:frowning:

I’m sorry you’re having trouble, but most of these issues haven’t been happening for me on the development side. I’ve tested the tool quite thoroughly with both the demo scene as well as my own projects. I’m currently working on some fixes that should solve your problems. The crash somehow hadn’t come up until just recently, which is indeed a huge problem! I’m not sure if it’s a new thing after the upgrade to 4.2, or what. I’ve been able to reproduce it now, and I’ll get the fix to you ASAP.

You are in fact missing something regarding the scene merge issue. The issue you’re describing is why the “Unpack Mine” and “Unpack Theirs” buttons are there. Once you’re done merging, you simply click either one, depending on which object (mine or theirs) you want to become your scene root. That will do the “dragging around” for you!

As I said, I’m working on fixes as I write this, so stay tuned!

Regarding the Unity crash, were you finding that this happened any time OTHER than using the copy-left or copy-right arrow buttons on the top level? I was able to reproduce a crash here (since this is kind of a special case and really kind of besides the point of the tool since it just deletes one object and duplicates the other) but nowhere else. This issue has been fixed, but please let me know if any other behavior crashes the program.

Fixes, fixes, everyone!

I’ve just submitted version 1.2 of UniMerge for approval. This version fixes:

  • Crash bug when coyping top-level object right or left
  • Default path wrong when moving scripts around
  • Skin missing button/toggle images
  • Losing prefab connection when copying sub-objects
  • Re-ogranized files (now everything is inside the ObjectMerge folder)
  • Renamed menu group from ObjectMerge to UniMerge
  • Now copies object references that aren’t GameObjects or Components
  • NullPointer protection
  • Removed default parameter specifiers which caused errors when using MonoDevelop to debug

These fixes have been made in direct response to user feedback, both here and in e-mails sent directly to me and the Defective team. Thanks for your patronage, your feedback, and your patience! Keep it coming!

P.S. If you’re a satisfied customer, please drop a review on the AssetStore page!
P.P.S. If you really want the latest version and can’t wait until it gets approved, send me a Private Message, and I’ll give you my e-mail address. I’ll ask that you send me a zip of the current version of the tool to verify that you’ve already bought a copy and I’ll reply with a copy of the latest version.

Not to post to my own thread three times in a row, but I’ve just updated the tool and created the first of (hopefully) many demo videos! Check out the youtube, and the changelog:

Also, we’re at version 1.4.2 now. This means:

  • Row height selector
  • Automated refresh (no more refresh button)
  • Added RenderSettings to SceneMerge
  • Various fixes and improvements :wink:

hello

Great tool! There are errors in Utils.cs in unity 4.5:

‘the label “case 16:” already exists in this switch statement.’

looks to be something comparing serialized Quaternion types?

Just need some advice. Check this out:

Just went to upgrade a project to 4.5 and got his error.
Is there a codefix?

Hey there. Sorry to neglect this thread. The quaternion error has been fixed in the latest version, which also now correctly supports Git on windows, and is much faster!

Another major update includes a fix for problems that cause MAJOR slowdowns and often locked up Unity entirely.

It turns out that if you make a change to a scene with prefabs that contain merge markup (like git’s >>>>> markup), Unity prints a warning to the console. Doing a merge on such a scene causes this warning to fire thousands of times, locking up Unity. I’ve added a case to halt the merge if this happens, telling you to to merge the prefabs first.

Merging prefabs has also been improved. If you try to merge the prefab assets themselves, UniMerge will now automatically drop them into the current scene and do the merge on those copies.

Finally, there have been major improvements to the VCS hook script, which now works in TortoiseGit and PlasticSCM as a diff/merge tool. This means you can go straight from your log or diff viewer to UniMerge! I’ll be putting out a video about this soon.