Delight LIVE UI editor sneak peek :)

Delight is a component-oriented framework for building well-structured and easily maintainable UI views in Unity and integrating them with your game model.

The framework is open-source and available on github. See the website for links and tutorials:

Now available on the asset store:

2 Likes

Website updated with new tutorials and API docs.

New tutorials up:

Views)
Asset Management
On-Demand Loading
Config
(excerpt from on-demand loading guide)

On-Demand Loading

Introduction

On-demand loading is a way to optimize memory usage and the initial load time of your scenes by only loading certain views and their assets when they are displayed. On-demand loading in Delight is simple and transparent.

LoadMode=”Manual”

By setting LoadMode=”Manual” on a view in XML you tell the framework that the view isn’t to be loaded until explicitly requested. The following example shows how a view is loaded/unloaded when the user clicks on a button:

MyView.xml

MyView.cs

namespace Delight
{
   public partial class MyView
   {
       public async void ToggleBigView()
       {
           if (!BigView.IsLoaded)
           {
               await BigView.LoadAsync();
           }
           else
           {
               BigView.Unload();
           }
       }
   }
}

We check IsLoaded, which is a boolean indicating if the view has been loaded, to either load the view by calling LoadAsync() (if you want to do it synchronously you can call Load() instead), or unload the view by calling Unload().

Asset Bundles

Delight greatly simplifies the use of asset bundles by making the process of loading and unloading them transparent. All assets (Sprites, Fonts, Materials, etc) that are referenced by views will automatically be loaded from their asset bundles on-demand. To create an asset bundle you simply need to make sure the assets reside in an a certain folder. See the Asset Management tutorial for more details.

Designer auto-complete taking shape.

Looks really cool, I like how it uses markup. Did you use something called recursive decent parsing to make it?

Not familiar with the term, but the parser uses recursion to parse each element in the XML :).

Designer now features preview thumbnails for assets, and tooltips.

Added new view: Expander

Using the designer to design the designer that designs the designer.

New feature added: Paged lists

1 Like

This is now available on the asset store (for free).
Asset store link: https://assetstore.unity.com/packages/slug/150494

1 Like

Showing off new feature: inline code. It’s now possible to insert C# code directly into the XML in bindings and click handlers through the ‘$’ prefix:

Inline code in click handler that increases click counter:
<Button Click="Click me" Click="$ ++ClickCount" />

Inline code in binding, calls Math.Pow() with click counter as parameter:
<Label Text="$ Math.Pow({ClickCount}, 2).ToString()" />

Added a simple Navigator view.

  <Navigator>
    <!-- page '/' -->
    <Region Navigator.Path="/">
      <Label Text="/" />
    </Region>

    <!-- page '/test' -->
    <Region Navigator.Path="/test">
      <Label Text="/test" />  
    </Region>
  </Navigator>

  <!-- buttons to open pages and navigate back -->
  <Group Spacing="5" Alignment="TopLeft" Orientation="Horizontal" Offset="20,0,0,0">
    <Button Text="Open '/'" Click="$ Navigator.Push('/')" />
    <Button Text="Open '/test'" Click="$ Navigator.Push('/test')" />
    <Button Text="Back" Click="$ Navigator.Pop()" />
  </Group>

Navigator view now supports custom transition animations:

Framework now supports custom animations for adding and removing list items.