Unity UI Screenshots

Hi!

Are you making something cool with the new UI? We would love to see the kind of things you are creating with the beta. This gives us an idea about what you are using it for, and helps us focus our efforts on the areas that are important to you right now! In a few weeks we will be asking for your feedback on where you would like to see the new UI go next, but this thread is not for that :slight_smile:

Please post some pictures / videos of things you have done with the new UI and a short description. This thread isn’t for discussion of how something was done (if you are curious message the person that did the cool thing and get them to create a thread or post in the UI scripts thread).

I look forward to seeing your cool UI’s!

None of these are very good, but they work… I’m linking to the playable versions since aesthetically they do nothing.

I’m not overly happy with any of it, but it’s a debugging UI, so it works: dlawre14.github.io (the last link on that page is the most interesting…)

2 Likes

Hi Tim :slight_smile:

We recently integrated the new UI in our Simple IAP System asset (switched over from NGUI). It uses menu transitions (by using Mecanim controllers), Scroll Rects and UI prefabs. But the most important part is dynamic content by using these UI prefabs, instantiating them within Scroll Rects and populating them (labels, icons, etc.) at runtime. Users enter their IAP data in an editor window, specify a UI prefab and the rest is done automagically.

Integrating it has been a joy, I’m really looking forward to the final release of 4.6. Keep it up!

3 Likes

We are converting our project Fairies vs Darklings to the new UI system. In this video, 95% of what you see is using the new system. Unfortunately, the gem board was not converted yet, so in the in-game scene there isn’t much to see.

7 Likes

Currently in development Revolution Earth by Delinquent Game Studios.


4 Likes

asset store: Flop | 2D Fonts | Unity Asset Store
forum thread: [RELEASED] Flop! - Community Showcases - Unity Discussions
thanks!

32 Likes

Remember to up the quality to 1080p :slight_smile:

PlanetUnity is an XML driven architecture for utilizing the new uGUI introduced in Unity 4.6.

The video shows a web demo of Unity web player combined with the Ace JS code editor. When the code is changed, the XML is reloaded in PlanetUnity immediately.

PlanetUnity has support for most of the uGUI supplied controls; it also provides a solid foundation for easily adding custom controls, and easily using those controls (see the end which shows a Table view implementation).

Transcript of what’s shown:

  • Modify the value of a Text
  • Modify the color of a Color
  • Adjust the alignment of a Text
  • Add a new Color
  • Use the @eval() processor to mathematically specify the bounds
  • Add various buttons, the click routes back to the Javascript and pops and alert
  • Shows RawImage and Image (Sprite) support
  • Shows ScrollRect with a bunch of images in it
  • Grid Layout Group
  • Changed the anchors to strecth,stretch, resized the view to show the responsive layout
  • Added a Table, which is table view which supports dynamic cells, multiple cell row heights and sticky table headers.

Working on porting Starbase Orion to Unity (as part of building Starbase Orion 2). This particular project is Starbase Orion Replays, which allows players of SO to spectate completed games in order to glean tactical and strategic information post-game. Everything you see is built using the new uGUI in Unity 4.6, using PlanetUnity.

Of particular note:

  • The map view on the left is in a ScrollRect, and scrolls nicely without many modifications.
  • The Table on the right grows and shrinks in response to changing content. The playback controls is a sticky table header.
  • The entire Unity web player resized when the window is resized, and the UI is responsive to the web player size changes.
  • The game connecting to our SmartFox server which drives the multiplayer for Starbase Orion.

https://github.com/SmallPlanetUnity/PlanetUnity2

http://chimerasw.com/starbaseorion/forums/index.php

7 Likes

That XML system is super awesome. Niiiice work :slight_smile:

Foundation uses the new uGUI.

  • Localization with built in translation
  • Databinding to controllers or viewmodels
  • Support for interfaces, clr objects, observable objects or monobehaviours
  • Complete multiplayer Lobby UI with game selection (ect)
  • Complete Account UI with signup / sign in (ect)
  • Async Task library with support for co-routines with return parameters or running actions in background threads
  • Includes LITJson
  • HTTPRest client with support for all HTTP verbs

Links

1 Like

That is really cool! instantly caught my eye when i saw it.

Reworked the UI using the new GUI tools, I have to say it works better than I expected :slight_smile:

4 Likes

I’m using the new UI to develop my RPG , the player HUD bars are skinned but all the rest uses default sprites as I’m still working on them and havent figured out how I want it to look and feel yet.

Main play screen with player HUD bars:

Race selection screen in the character creation sequence:

character creation overview screen - you can add/remove and review some basic info here

character naming and portrait selection; havent made the portraits yet, and in fact I dont know how to add a list of portraits yet so its just a big placeholder image at the moment! :slight_smile:

In game level editor I just started on so very rough

Sorry not sure how to do thumbnails on this kind of forum if these are too big let me know I’ll use hyperlinks instead??

I’ve largely found the new UI pretty quick and easy to deal with and prototyping is pretty fast.

Some of the advanced stuff wasn’t documented at first or hard to find … like Layout stuff… I had no idea where that was or it existed until I saw someone mention it on the beta forums here but now that I’ve found that its a life saver! :slight_smile:

5 Likes

Love the random dungeon generator, reminds me of my own generator for a project.

Thank you Slev! It is actually not random though ; the sliders let you set the dimensions of the dungeon, and then you use a carve tool to carve the dungeon you want. Then in the bottom right is a detail inspector where you can tweak some of the attributes (change a wall to a shelved wall, change a floor to a pit etc).

Mine is nowhere near as great as some of the others posted on here, but I’ll give it a shot. xP This is my first-ever attempt at making a full GUI from scratch… I’ve never done it before in my life lol, but I think I did okay… Everything you see was hand-made by me, except for the animation. I have the consent of the original creator to use it in my file. If I ever release a full-fledged game with it, I’ll probably change the animation to something I created myself as well… I’m thinking of releasing the entire pack on the asset store. Everything is prefabbed up and ready to go out of the box… Leave me some feedback and let me know if this is something you would pick up from the store… Enough votes for it and I’ll throw it on there.

The Full GUI is below… I should probably lose a bit of thickness on the sliders and handles, but other than that it looks pretty good. Still a bit of work to do, though.

Also, can you tell that the red X is a toggle? I think I’m just being too critical on myself… I tend to do that lol… Just give me some feedback on it and I’ll fix whatever I can… xP

2 Likes

My project have some skill buttons with cool down effect as this:
1788575--113798--CoolDownButton.png
I can use 2 image to build it: gray and color image and make color image with fill property. But it’s doubled render calls. So I made a shader and a script which inherit from BaseVertexEffect.

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;

[RequireComponent(typeof(UnityEngine.UI.Image))]
public class GrayImage : BaseVertexEffect {
    [Range(0,1)]
    public float fill;
    //public Color grayColor = Color.white;
    [Range(0,1)]
    public float grayScale = 0.7f;
    public Shader grayscaleShader;
    [System.Serializable]
    public enum FillDirection
    {
        BottomTop,
        TopBottom,
        LeftRight,
        RightLeft,
    }
    public FillDirection fillDirection;
    UnityEngine.UI.Image image;

    // Use this for initialization
    protected override void Start () {
        image = GetComponent<UnityEngine.UI.Image>();
        image.material = new Material( grayscaleShader );
    }
   
    // Update is called once per frame
    void Update () {
        image.material.SetFloat("_Fill", fill );
//        image.material.SetColor("_GrayColor", grayColor );
        image.material.SetFloat("_GrayScale", grayScale );
    }

    public override void ModifyVertices (List<UIVertex> verts)
    {
        if (!this.IsActive ())
        {
            return;
        }
        float min = float.MaxValue;
        float max = float.MinValue;
        float len = 0;
        for (int i = 0; i < verts.Count; i++)
        {
            switch( fillDirection )
            {
            case FillDirection.BottomTop:
            case FillDirection.TopBottom:
                if( verts[i].position.y < min )
                    min = verts[i].position.y;
                if( verts[i].position.y > max )
                    max = verts[i].position.y;
                break;
            case FillDirection.LeftRight:
            case FillDirection.RightLeft:
                if( verts[i].position.x < min )
                    min = verts[i].position.x;
                if( verts[i].position.x > max )
                    max = verts[i].position.x;
                break;
            }
        }
        len = max - min;
        if( len == 0 )
            return;
        for (int i = 0; i < verts.Count; i++)
        {
            UIVertex uiVertex = verts[i];
            switch( fillDirection )
            {
            case FillDirection.BottomTop:
                uiVertex.uv1.y = (verts[i].position.y - min) / len;
                break;
            case FillDirection.TopBottom:
                uiVertex.uv1.y = (max - verts[i].position.y) / len;
                break;
            case FillDirection.LeftRight:
                uiVertex.uv1.y = (verts[i].position.x - min) / len;
                break;
            case FillDirection.RightLeft:
                uiVertex.uv1.y = (max - verts[i].position.x) / len;
                break;
            }
            verts[i] = uiVertex;
        }
    }
}
Shader "UI/Grayscale"
{
    Properties
    {
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
        _Color ("Tint", Color) = (1,1,1,1)
        _Fill ("Fill", Range(0,1)) = 0
//        _GrayColor ("Gray", Color) = (1,1,1,1)
        _GrayScale ("GrayScale", Range(0,1)) = 1
       
        _StencilComp ("Stencil Comparison", Float) = 8
        _Stencil ("Stencil ID", Float) = 0
        _StencilOp ("Stencil Operation", Float) = 0
        _StencilWriteMask ("Stencil Write Mask", Float) = 255
        _StencilReadMask ("Stencil Read Mask", Float) = 255

        _ColorMask ("Color Mask", Float) = 15
    }

    SubShader
    {
        Tags
        {
            "Queue"="Transparent"
            "IgnoreProjector"="True"
            "RenderType"="Transparent"
            "PreviewType"="Plane"
            "CanUseSpriteAtlas"="True"
        }
       
        Stencil
        {
            Ref [_Stencil]
            Comp [_StencilComp]
            Pass [_StencilOp]
            ReadMask [_StencilReadMask]
            WriteMask [_StencilWriteMask]
        }

        Cull Off
        Lighting Off
        ZWrite Off
        ZTest [unity_GUIZTestMode]
        Fog { Mode Off }
        Blend SrcAlpha OneMinusSrcAlpha
        ColorMask [_ColorMask]

        Pass
        {
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
           
            struct appdata_t
            {
                float4 vertex   : POSITION;
                float4 color    : COLOR;
                float2 texcoord : TEXCOORD0;
                float2 uv1 : TEXCOORD1;
            };

            struct v2f
            {
                float4 vertex   : SV_POSITION;
                fixed4 color    : COLOR;
                half2 texcoord  : TEXCOORD0;
                half2 uv1 : TEXCOORD1;
            };
           
            fixed4 _Color;
            fixed _Fill;
//            fixed4 _GrayColor;
            fixed _GrayScale;

            v2f vert(appdata_t IN)
            {
                v2f OUT;
                OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex);
                OUT.texcoord = IN.texcoord;
                OUT.uv1 = IN.uv1;
                OUT.color = IN.color * _Color;
                return OUT;
            }

            sampler2D _MainTex;

            fixed4 frag(v2f IN) : SV_Target
            {
                half4 color = tex2D(_MainTex, IN.texcoord);
                if( IN.uv1.y > _Fill )
                {
                    fixed grayscale = Luminance( color.rgb );
                    color.rgb = grayscale.xxx * _GrayScale + 1 - _GrayScale;
//                    color = color * _GrayColor;
                }
                color = color * IN.color;
                clip (color.a - 0.01);
                return color;
            }
        ENDCG
        }
    }
}

Wish more Effect related classes could be provide.

btw. UIVertex only provide uv0 and uv1. Could you please add more uv channels?

1788575–113799–GrayImage.cs (2.15 KB)
1788575–113800–UI-Grayscale.shader (2.06 KB)

8 Likes

Main Menu and Graphics Settings for Twin Souls: The Path of Shadows.

Using a World Canvas for the menu guis.


10 Likes

RPG & MMO UI for Unity 4.6 GUI

7 Likes
5 Likes

I see everyone with amazing UIs and here i am with my score UI xD

3 Likes

I’m working on a business application for a customer based on uGUI instead of using Python+Kivy as I do usual. The overall process is much quicker, custom prefabs of common ui components are making things very easy.
Feels good to work with the new beta.