Giter VIP home page Giter VIP logo

unitygui's Introduction

Gameframe.GUI ๐Ÿ‘‹

Version Twitter: coryleach

This is a library of GUI helpers for UGUI
Includes a panel system that implements a navigation stack.
Includes a scene transition system.
Includes a SRP shader for blurring the background of UI panels.

Quick Package Install

Using UnityPackageManager (for Unity 2019.3 or later)

Open the package manager window (menu: Window > Package Manager)
Select "Add package from git URL...", fill in the pop-up with the following link:
https://github.com/coryleach/UnityGUI.git#3.0.12

Using UnityPackageManager (for Unity 2019.1 or later)

Find the manifest.json file in the Packages folder of your project and edit it to look like this:

{
  "dependencies": {
    "com.gameframe.gui": "https://github.com/coryleach/UnityGUI.git#3.0.12",
    ...
  },
}

Usage

After importing this package via the PackageManager import the Demo/Demo.unitypackage file from the Assets->Import Package option in the menu.

PanelView

PanelView which provides Show & Hide behavior which can be instant or async and awaitable.

AnimatedPanelView

References one or more IPanelAnimator components to control animate the Show & Hide of a panel. If you await the Show & Hide async methods

PanelViewController

Controller for the display of a PanelView.

PanelViewControllerBehaviour

A version of PanelViewController that is also a MonoBehaviour component that can be added to a game object. Often you may want to set up & configure PanelViewControllers with data other than the panel type and using this class will allow you to do that in editor.

PanelStackSystem

A scriptable object representation of a panel stack. Main purpose is in maintaining the navigation history of a menu. Push and Pop panel controllers onto this stack. If any PanelViewStackController component that subscribes to the PanelStackSystem will respond to the push and show/hide the corresponding panels. Generally the top PanelViewController on the stack is always visible.

PanelViewStackController

A MonoBehaviour that references a PanelStackSystem. It responds to changes in the panel stack by getting the current showing and hiding controllers. It will then perform the necessary transitions.

PanelViewControllerProvider

A scriptable object which services is a collection of PanelViewControllers. Generally you register PanelViewControllerBehaviour with a provider so that you can push them using the PanelPusher component. It also controls the location that views are parented to in the hierarchy.

PanelViewControllerRegisterer

Add this component to a PanelViewControllerBehaviour to register the controller with a PanelViewControllerProvider instance.

PanelType

Contains information about a panel and is used by the PanelViewController to locate the prefab and instantiate the PanelView.

Author

๐Ÿ‘ค Cory Leach

Show your support

Give a โญ๏ธ if this project helped you!


This README was generated with โค๏ธ by Gameframe.Packages

unitygui's People

Contributors

coryleach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unitygui's Issues

Supporting a Panel View having an easy reference to its controller

When using this library, I often need a PanelView to reference its controller.

For example, when a button is pressed, the panel view might need to go to its controller to alter some game state. With the current implementation, it's a bit cumbersome to get access to a panels controller:

`public class SomeCoolPanelView : AnimatedPanelView
{
public PanelViewControllerProvider Provider;
public PanelType SomeCoolPanelView;

private SomeCoolPanelViewController controller;

private void OnEnable()
{
  controller = Provider.GetOrCreate(SomeCoolPanelView) as SomeCoolPanelViewController;
}

public void PressedSomething() => controller.OnPressedSomething();

}`

Would be interested to see if there was a way that PanelViewBase could somehow contain an instance of its corresponding controller? Been thinking about trying to implement it myself but wanted to get some thoughts.

c#8 in 2019.4

This package seems to use the null coalescing assignment operator from c#8, but your README seems to indicate compatibility with 2019.3. For me, this doesn't compile in 2019.4.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.