[Cyber Sale 50% off!] Advanced Scene Manager

We are excited to introduce our new asset, Advanced Scene Manager, and share why we believe it will be a valuable tool for your projects.

Try Advanced Scene Manager out, evaluate how it works and if it fits your needs!
Trial version available here.

Background

Advanced Scene Manager (ASM) originated from our own experiences while developing a game. A year ago, we realized that not having a proper scene management solution led to an increasingly unmanageable mess every time we added a new scene. It reached a point where we had to either shut down the project or completely remake it.

Determined to solve this problem once and for all, we decided to create an asset that would simplify scene management. We carefully planned and executed ASM, and we are proud to say that we succeeded in creating a robust solution.

Why You Will Benefit from ASM

Our goal in developing ASM was to create an inclusive tool that supports a wide range of use cases. With ASM, you can set up your game flow in minutes instead of hours, weeks, or months.

We believe ASM can greatly simplify your development process, and we are eager to hear about your specific use cases. Your feedback could help us further enhance the asset to meet your needs.

Very much appreciate you took the time to read and checking out our asset!

2 Likes

Are there any buttons in the editor window to load the scene(s) in and out of the editor?

So that I can jump between things in the scene view.

Yes, you are able to load in a Collection, a Single scene, or additively, so that you quickly can jump between scenes.
The buttons that look like :arrow_right_hook:, + handle that, (Tbh we are still looking to change those icons, any tips?)

You are also able to whitelist and blacklist scenes, in case you want a scene to always be there when you open another scene.

If you wish to scroll through the controls you can check our documentation for that section here:
https://github.com/Lazy-Solutions/advanced-scene-manager/wiki/SceneManagerWindow

Oh the button changes when you click it. Now that makes sense. As for a different button, I don’t have any preferences at the moment but I’ll definitely have to check this out when I get home.

Thank you for taking interest in our work! looking forward to any feedback you can give. :slight_smile:

Any idea why this keeps appearing and incrementing by 1 when this asset is in my project?

6757813--780058--upload_2021-1-23_17-9-8.png

It happens when I save the scene/project and probably some other things too.

Example: Saved the scene, saved the project, made a collection etc.

6757813--780061--upload_2021-1-23_17-10-58.png

That’s something we have to look into! :hushed:

What version of unity are you using?
Does it give you any more info than that?

Unfortunately, errors other than those mentioned have slipped through testing into the release.

Currently issues with building the project, this will be addressed and updated asap, together with other planned patching like reduce dependencies. Should be sorted today and sent to unity for patching.
This doesn’t cause issues working in the editor, but none the less something we shouldn’t have missed.
As we work to bring you a product we are proud of, we learn along the way!

Thank you for your patience and understanding.

1 Like

Nope, that’s all it says. I’m using 2020.1.15f1 but I should probably update to the newest version (2020.2.2f1) and see if it fixes it.

Keep me noted, I was unable to reproduce, but I did find other issues thanks to it :smile:

Patch has been submitted and will hopefully be live within a few days.

If a support package is needed it can be requested until then!

For some reason updating fixed it. I’m not sure if my project being outdated was the issue or updating causing a reimport did.

Reason I’m unsure is because when I first imported the package Unity was refusing to acknowledge any scenes that weren’t newly created (I couldn’t drag them into ASM). Then it imported for a few seconds and all the scenes appeared but that error likely started occurring. So it might’ve been an editor issue that was cached that got deleted during the upgrade.

Just to be on the safe side can you PM me or email me the updated package?

If it happens that a scene just refuses, which happens sometimes, we have a refresh button installed to force everything to update. which can be found in the top right corner!

Advanced scene manager has been patched live now! combated the issues presented earlier in thread.

Patch v1.0.1

  • Fixed errors causing build to fail.
  • Reduced amount of dependencies.
  • Fixed warnings with css.
  • Updated offline documentation.

Heya developers!

We just uploaded version 1.0.2, with a few new small features and quite the update.
We also created a Roadmap to prepare for a larger update.

Bugfixes/Changes:

  • Updated Startup action to improve and bugfixes with splash screen and loading screen.
  • Removed Input system dependency.
  • Fixed error causing “Cannot get non-Existing progress id #”
  • Fixed buttons being unresponsive.
  • Remade all items in SceneManager from static classes to static properties, and have as such been renamed to use first letter lowercase.

New Features:

  • Quick scene split.
  • Quick scene Merge.
  • Temp build now deletes temp build once game closed.

Hiya!

New update once again! 1.1.0, with a new feature!
Added Cross Scene References to the mix as we felt that would fit very well into the asset.
Built-in ready to be used, just drag and drop references that’s it.

Any features you’d like to see us add? hit us up here or on discord!

Have a nice weekend!

Hi @Nuwm, great asset, started playing around with it this weekend and hit an issue where when you register non-persistent callbacks for sceneOpen/close you are removing them from the list while iterating the same list (which c# doesn’t like). Anyway the fix is to create a copy of the list then iterate on the copy. I’ve patched the code below in my build to fix the issue but you might want to update your package. I suppose you’ve been testing with persistent callbacks all this while :slight_smile:

Ideally would be great if you could use some temporary list instead of creating a new one (like I did below) so you don’t generate extra garbage each time a scene is open/closed. (personally I use a collection pool for that purpose).

void OnSceneOpened(object scene, SceneManagerBase sceneManager)
                {

                    ISceneObject obj = null;
                    if (scene is OpenSceneInfo info)
                        obj = info.scene;
                    else if (scene is SceneCollection collection)
                        obj = collection;
                    else
                        return;

                    if (sceneOpenCallbacks.TryGetValue(obj, out var list))
                    {
                       // <--- Here should make a copy of the list   
                        var listCopy = new List<(Action action, bool persistent)>();
                        listCopy.AddRange(list);
                        foreach (var action in listCopy)
                        {
                            action.action?.Invoke();
                            if (!action.persistent)
                                sceneOpenCallbacks.GetValue(obj).Remove(action);
                        }
                    }

                    if (scene is OpenSceneInfo info2)
                        utility.SceneOpened?.Invoke(info2, sceneManager);

                }

                void OnSceneClosed(object scene, SceneManagerBase sceneManager)
                {

                    ISceneObject obj = null;
                    if (scene is OpenSceneInfo info)
                        obj = info.scene;
                    else if (scene is SceneCollection collection)
                        obj = collection;

                    if (sceneCloseCallbacks.TryGetValue(obj, out var list))
                    {
                                              // <--- Here should make a copy of the list
                        var listCopy = new List<(Action action, bool persistent)>();
                        listCopy.AddRange(list);
                        foreach (var action in listCopy)
                        {
                            action.action?.Invoke();
                            if (!action.persistent)
                                sceneCloseCallbacks.GetValue(obj).Remove(action);
                        }
                    }

                    if (scene is OpenSceneInfo info2)
                        utility.SceneClosed?.Invoke(info2, sceneManager);

                }

Hi @YohanSG !

Thank you for your support, we are grateful for the suggestion. :slight_smile:

I sent this on to the main engineer, he replied that he added the copy suggestion and if he’ll take a look at the pooling suggestion if it’s needed. :smile:

We have a bigger update in the making so will take a little while until that’s done before we update the package. Hopefully within a few weeks! :slight_smile: (Hopefully)

New update! 1.2.0

With a bonus Debug.log every time you save! (nothing we intend to keep, it just somehow slipped in :roll_eyes:)

Update v1.2.0

New Features:
Stutter reduction: Tools to help to reduce laggy loads often caused by initializing too much in start/awake. and automatic backgroundLoadingPriority.
Team Lock: Enables you to set scenes and collections to “locked”, thus preventing unwanted changes and more merge conflicts.

Fixes:
Important: removed tag startup options, this was confusing and caused confusion, like this sentence…
Editor: Added multi drag and drop to collections, for those who need to add 100+ scenes.
Editor: Fixed dropping when dragging scene from the hierarchy.
Editor: Fixed collections collapsing when reordering scenes.
Editor: Holding shift on collection open buttons to ignore any tags set on scenes.
Extra: 4 new Loading screen examples: Video, Quote, IconBounce, PressAnyButton.
Runtime: Added SceneCollection.Find, to easily find a collection by name.

Thanks Team for the update!

I have an issue (in the previous version too) where even though I’ve disabled the default pause screen, it still shows up in my Builds (not when running in editor).

Possible to take a look?