All Projects → Xerios → Screenmanager

Xerios / Screenmanager

Licence: mit
Flexible way to manage screens with transitions for Unity

Projects that are alternatives of or similar to Screenmanager

Reeseunitydemos
Unity packages and demos—emphasizing ECS, jobs and the Burst compiler—by me, Reese.
Stars: ✭ 232 (-22.67%)
Mutual labels:  unity, navigation
Marching Cubes Terrain
Marching Cubes terrain implementation in Unity using the Job System and the Burst compiler
Stars: ✭ 292 (-2.67%)
Mutual labels:  unity
React Horizontal Scrolling Menu
Horizontal scrolling menu component for React.
Stars: ✭ 289 (-3.67%)
Mutual labels:  navigation
Project Skylines
procedural retro 3d game, winner of the GitHub Gameoff 2017
Stars: ✭ 293 (-2.33%)
Mutual labels:  unity
Ecsrx
A reactive take on the ECS pattern for .net game developers
Stars: ✭ 288 (-4%)
Mutual labels:  unity
Open Project 1
Unity Open Project #1: Chop Chop
Stars: ✭ 4,235 (+1311.67%)
Mutual labels:  unity
Unityruntimespritesheetsgenerator
Unity – generate SpriteSheets at runtime!
Stars: ✭ 286 (-4.67%)
Mutual labels:  unity
Depthinverseprojection
An example showing how to inverse-project depth samples into the view/world space in Unity.
Stars: ✭ 296 (-1.33%)
Mutual labels:  unity
Navego
NaveGo: an open-source MATLAB/GNU Octave toolbox for processing integrated navigation systems and performing inertial sensors analysis.
Stars: ✭ 294 (-2%)
Mutual labels:  navigation
Unity Destruction
💥 An open-source script to destroy objects realistically in Unity3D.
Stars: ✭ 291 (-3%)
Mutual labels:  unity
Gromit Mpx
Gromit-MPX is an on-screen annotation tool that works with any Unix desktop environment under X11 as well as Wayland.
Stars: ✭ 287 (-4.33%)
Mutual labels:  unity
Angrybirdsstylegame
Angry Birds style game in Unity
Stars: ✭ 290 (-3.33%)
Mutual labels:  unity
Ilruntime hotgames
基于ILRuntime的热更新能力实现的可以直接使用的框架,友情赠送C# WebService + WebSocketServer服务器端。
Stars: ✭ 293 (-2.33%)
Mutual labels:  unity
Unity Script Collection
A maintained collection of useful & free unity scripts / library's / plugins and extensions
Stars: ✭ 3,640 (+1113.33%)
Mutual labels:  unity
Kcp
KCP C#版。线程安全,运行时无alloc,对gc无压力。
Stars: ✭ 294 (-2%)
Mutual labels:  unity
Air Light
WordPress starter theme - designed to be minimal, lightweight and easy for all kinds of WordPress projects. Public Roadmap: https://favro.com/organization/3b45e73eaf083f68fefef368/c1dd2d4a99d6723904d2e763
Stars: ✭ 285 (-5%)
Mutual labels:  navigation
Zcode Assetbundlepacker
Unity的AssetBundle模块扩展插件,主要目的用于简化AssetBundle打包,提供AssetBundle管理,支持热更新、支持资源包下载、支持版本控制。
Stars: ✭ 291 (-3%)
Mutual labels:  unity
Extramaputils
🌍 the simple utility for google maps in android
Stars: ✭ 293 (-2.33%)
Mutual labels:  navigation
Proceduralmotiontrack
Simple procedural motion with Unity Timeline.
Stars: ✭ 300 (+0%)
Mutual labels:  unity
Gdk For Unity
SpatialOS GDK for Unity
Stars: ✭ 296 (-1.33%)
Mutual labels:  unity

ScreenManager

Flexible way to manage your UI with transitions, layers and proper navigation handling for Unity.

Features

  • ScreenEditor inspector
  • but the whole system can be used fully through code
  • Multi-layered stack based navigation ( alertbox > popup > main )
    • Re-usable screen instances
    • Duplication of screens ( popups, alerts )
  • Optimized clean and bloatfree code, no additional libraries required
  • Button-mashing-proof, screens respect their order and animate in/out properly
  • Default input handling using Unity's UI events ( including cancel/back event )
  • Always-on selected button for gamepad and keyboard-aware navigation
  • Spread feature: See all your screens in a grid view for an easier overview and editing
  • Buttons navigation generation
    • Optional focused default button
    • Cancel/back button which is selected when Cancel key is pressed
    • Isolate navigation to the current screen
  • Extendable generic BaseScreen class
    • Including pre-made presets: Animate, Tween, AnimationController
    • Easily create your own type of screen using the BaseScreen class
  • Mobile tested
  • Includes three examples
  • Fully documented code

Gif

Gif

( Note: The inspector window is not forcefully updated, which is why it lags a bit behind )

Screenshots

Screenshot Screenshot Screenshot Screenshot

Sample code

screenmgr.Show("MainMenu");
screenmgr.ShowPopup<Popup>("Alertbox").Message = "Custom Alert Text";
screenmgr.HideAll();

Info

How to use ?

Simply create a new ScreenManager on any canvas element. (Preferably right underneath the main canvas element.)

Ignore the ScreenManager settings for now, let's create some screens.

To start, we can add SimpleTweenScreen under ScreenManager GameObject.

For custom screens: You can either inherit BaseScreen class or any other pre-made classes: AnimatorScreen, Popup, SimpleTweenScreen, TweenedScreen

Once SimpleTweenScreen is added, you'll notice few things :

  • It added a CanvasGroup element
  • It has a lot of strange settings

By default BaseScreen class provides several important settings, these settings are the core of makes the screen work so well :

  • Generation Settings
  • Generate Navigation ( Create explicit navigation so that keyboard/gamepad navigation never leaks to an another screen )
  • Cancel Selection ( Button selected or executed when ESC or back button is pressed )
  • Cancel Selection
  • Hide Current ( Hide previous screen or overlay on top of the previous screen )
  • Keep on Top when hiding ( Keep its drawing order on top when hiding )
  • Layer Priority ( All screens have layers, imagine that an alert box will block all screen changes that are below it but wouldn't block other alert boxes )
  • Default Selection ( Button selected by default when the screen is shown, when left empty : first button found is selected )

You can leave those settings as they are for now, no need for additional configuration.

Once we added SimpleTweenScreen to all our screens, we can define our default screen that's going to be open on run.

Go to ScreenManager ( Shortcut Ctrl+Alt+T or Window/Select ScreenManager in the menu )

Select your SimpleTweenScreen in the Screens section. Once selected you'll see a button named "Set Default" appear.

Click on it, it will set that screen as the default/main screen.

ScreenManager

Now that's done we can pass to setting up our buttons.

There's two ways to setup the buttons :

Button Button

You can either show a screen by its name, or by it's GameObject reference.

( Tutorial to be finished )

Contribution

There's always more to add, so if you want to help then feel free to contribute !

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].