Giter VIP home page Giter VIP logo

fairygui-unity's Introduction

FairyGUI for Unity

FairyGUI is a Cross Platform UI Editor & UI framework. Get FairyGUI-Editor

Compared with traditional Unity UI engines such as NGUI and UGUI, FairyGUI uses a way of thinking closer to the designer to redefine the production process of the UI, which greatly reduces the time the programmer needs to invest in making the UI.

In terms of running efficiency, FairyGUI uses the unique FairyBatching technology for DrawCall optimization, which is more efficient and easier to control than the traditional optimization techniques of NGUI and UGUI.

In terms of functionality, FairyGUI has good built-in support for traditional UI production pain points, such as rich text (including image and animation), emoji input (direct support for keyboard), virtual list, loop list, pixel-level hit test, curved UI, gesture, particles and model interspersed UI, typing effect, etc.

FairyGUI also fully encapsulates all input methods. Whether mouse, single touch, multi-touch, or VR handle input, developers can use the same code to handle interaction.

The library was designed to work with Unity 5.6 and above, but is currently only tested with Unity 2018 and above.

Learn

Guide

License

MIT

fairygui-unity's People

Contributors

a2008110 avatar aq-1000 avatar autukill avatar ep-toushirou avatar geequlim avatar h0nok4 avatar libla avatar magicskysword avatar qiwucwb avatar radarhere avatar ttt1088 avatar xiaoguzhu avatar yangqingming avatar yhchen avatar zxsean 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  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

fairygui-unity's Issues

Screen and Screen Navigation

Right now i m developing Application Using Fairy UI , But most Major Problem here is absence of Screens and Screen Navigation ,
every time i have to reinvent the wheel ,

if you add Screen and Screen Navigation System Like Feathers it would be Great..

Min and Max

Can you plz introduce min and max limits in future versions ..?
min width ,max width
min height and max height ..?

Drawers

Can you please make SlideBlock as Proper Side Menu with atleast following features

  • Push
  • Scale Down

If possible also add

  • Uncover
  • Slide Along
  • Slide Out

Here are working examples of Side Menus

Attribute Suggestion

only GetChild function, It is hard to managemet code. so I suggested using attribute

before

GButton item = list1.AddItemFromPool().asButton;
item.GetChild("t0").text = "" + (i+1);
item.GetChild("t1").text = testNames[i];
item.GetChild("t2").asTextField.color = testColor[UnityEngine.Random.Range(0, 4)];
item.GetChild("star").asProgress.value = (int)((float)UnityEngine.Random.Range(1, 4) / 3f * 100);

after

public class AListItem : BaseGComponentHelper
{
	[GChild]
	FairyGUI.GTextField t0 = null;

	[GChild]
	FairyGUI.GTextField t1 = null;

	[GChild]
	FairyGUI.GTextField t2 = null;

	[GChild("star")]
	GProgressBar bar = null;

	public AListItem(GComponent comp) : base(comp)
	{
	}

	public void Init(string txt, string name, Color color, float progress)
	{
		t0.text = txt;
		t1.text = name;
		t2.color = color;
		bar.value = progress;
	}
}

var txt = "" + (i + 1); ;
var name = testNames[i];
var color = testColor[UnityEngine.Random.Range(0, 4)];
var progress = (int)((float)UnityEngine.Random.Range(1, 4) / 3f * 100);

var item = list1.AddItemFromPool().As<AListItem>();
item.Init(txt, name, color, progress);

implementation example
i know it invoke reflection function effect on performance. but sometimes it will be deserved.

using UnityEngine;

using FairyGUI;
using System;
using System.Reflection;
using System.Linq;

public static class GComponentExtension
{
	public static T As<T>(this GObject obj) where T : BaseGComponentHelper
	{
		return (T)Activator.CreateInstance(typeof(T), obj.asCom);
	}
}

public class BaseGComponentHelper
{
	public BaseGComponentHelper(GComponent comp)
	{
		LoadComponents(comp);
	}

	public void LoadComponents(GComponent comp)
	{
		var behaviour_type = this.GetType();
		var path_type = typeof(GChildAttribute);

		var fields = behaviour_type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(m => m.GetCustomAttributes(path_type, true).Length == 1);

		foreach(var field in fields)
		{
			var attribute = field.GetCustomAttributes(path_type, true)[0] as GChildAttribute;
			var path = (attribute.IsSelf) ? field.Name : attribute.path;

			var gobject = comp.GetChild(path);
			if(gobject == null)
			{
				Debug.LogError(string.Format("can't find gobject in {0}", path));

				continue;
			}

			field.SetValue(this, gobject);
		}
	}
}

public class GChildAttribute : Attribute
{
	public readonly string path = null;

	public bool IsSelf
	{
		get { return this.path == null; }
	}

	public GChildAttribute(string path)
	{
		this.path = path;
	}

	public GChildAttribute()
	{
		this.path = null;
	}
}

Controls Within Control

Hi!

i have created itemRenderer it has delete button.
when delete button clicked , itemRenderer also dispatches its selection event.
how to prevent parent from taking event ?

list Inertia get Disabled

problem

after this layout code , during Scrolling list inertia some time get disabled

` private void RenderListItem(int index, GObject item)
{

    var button = item.asButton;

    var icon = button.GetChild("icon");
    var backGround = button.GetChild("backGround");
    var label = button.GetChild("text");



    var randomNo = UnityEngine.Random.Range(2, 10);

    var str = Path.GetRandomFileName();

    for (int i = 0; i < randomNo; i++)
    {
        str += Path.GetRandomFileName();
    }




    label.text = str;

    
    //        layout

    
    var margin = 10;
    icon.xy = new Vector2(margin, margin);


    label.width = button.width - 40 - icon.x - icon.width;

    backGround.height = label.height + margin;
    backGround.width = label.width + margin;


    backGround.x = icon.x + icon.width + margin * 2;
    backGround.y = 5;

    label.x = backGround.x + 5;
    label.y = backGround.y + 5;


    button.height = backGround.y + backGround.height + 5;
    
}`

Better Approach to make Emoji Like Chat UI

Hi!
i was wondering why you are using poll and adding child directly..?
instead of increasing list.numItems ..?
"i have not seen any example of using list.data"

list is also not set to virtualized , instead you are explicitly checking its childCount and adding them in pool.
yes there are two item renderers , therefore you are using this thing.

but is there any better way we can adopt while using more then one itemRenderers , with virtualization as and not adding child directly to list..?

List FlowLayout Problem

1- create List
2-apply FlowLayout
3-Created Items With Different Size(height and Width)

1 - overFlow on each other Problem
2 -items Disappearing during scrolling as stated before.

Chat UI

Hi!
i m working on Chat UI thing right now , and stuck itemRenderer width ,

i have seen your Emoji Example , but it is not responsive,

now case is.
1- item renderer's min width should depends upon inner text ,
2- but max width depends upon list available width..

how i can solve.

Extend list Pagination

Hi!
list-view Pagination is working great , but it has some limitations.
1- You can not specify Row count in it.
2- tiles don't not have auto size, items could also auto size and fill entire area.

right now behavior is this.

image

could it be improved to be like this ?
image

5.4 dll TypeLoadException

when i create fariygui/uipanel from 5.4/dll
i got error messege

TypeLoadException: Could not load type 'FairyGUI.GearBase' from assembly 'FairyGUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
FairyGUI.GComponent..ctor () (at D:/FairyGUI-unity/Scripts/UI/GComponent.cs:56)
FairyGUI.GRoot..ctor () (at D:/FairyGUI-unity/Scripts/UI/GRoot.cs:38)
FairyGUI.Stage.Instantiate () (at D:/FairyGUI-unity/Scripts/Core/Stage.cs:99)
FairyGUI.Stage.get_inst () (at D:/FairyGUI-unity/Scripts/Core/Stage.cs:85)
FairyGUI.UIPanel.SetSortingOrder (Int32 value, Boolean apply) (at D:/FairyGUI-unity/Scripts/UI/UIPanel.cs:242)
FairyGUI.UIPanel.CreateContainer () (at D:/FairyGUI-unity/Scripts/UI/UIPanel.cs:180)
FairyGUI.UIPanel.OnEnable () (at D:/FairyGUI-unity/Scripts/UI/UIPanel.cs:90)

Question about showpopup.

GRoot.inst.SetContentScaleFactor (600, 800);
UIPackage.AddPackage ("Package1", loadFunc: LoadResource);
GComponent comp = UIPackage.CreateObject("Package1", "Component1").asCom;
GRoot.inst.ShowPopup (comp);

that code doesn't work what i intend.

GRoot.inst.ShowPopup (comp);
comp.Center (); // adding this line, it will work correctly.

i'm confused why comp.Center() is needed

Help in Project Structure

Hi!
could not run even a simple color component.

steps
1- Create new project in Fairy GUI editor.
2- New Component.
3- Color it , and check bgColor
4- Export.

Edit "Basics" Scene ,
Select Package and component ,

Run

Create test@test failed!
UnityEngine.Debug:LogError(Object)
FairyGUI.UIPanel:CreateUI_PlayMode() (at D:/FairyGUI-unity/Scripts/UI/UIPanel.cs:336)
FairyGUI.UIPanel:Start() (at D:/FairyGUI-unity/Scripts/UI/UIPanel.cs:128)

Please Help to resolve it.
Fairy Gui Editor, Unity Plugin both are Updated.

using unity 5.6

Remote Images

after seeing IconManager.cs i was thinking about how i can load remote images ,
IconManager is a complete package for loading and caching images , but its fields are not protected , means i could not extends this...

so i have made some alternations in Run() , plz accept these changes or if you have better idea ,do implement.

`IEnumerator Run()
{
_started = true;

	LoadItem item = null;
	while (true)
	{
		if (_items.Count > 0)
		{
			item = _items[0];
			_items.RemoveAt(0);
		}
		else
			break;

		if (_pool.ContainsKey(item.url))
		{
			//Debug.Log("hit " + item.url);

			NTexture texture = (NTexture)_pool[item.url];
			texture.refCount++;

			if (item.onSuccess != null)
				item.onSuccess(texture);

			continue;
		}


        string url ;
        bool indernal;


        if (item.url.IndexOf("ui://") == 0)
        {
            url = _basePath + item.url + ".ab";
            indernal = true;
        }
        else
        {
            url = item.url;
            indernal = false;
        }




        WWW www = new WWW(url);
		yield return www;

		if (string.IsNullOrEmpty(www.error))
		{

            NTexture texture;

            if (indernal)
            {
                AssetBundle bundle = www.assetBundle;
                if (bundle == null)
                {
                    Debug.LogWarning("Run Window->Build FairyGUI example Bundles first.");
                    if (item.onFail != null)
                        item.onFail(www.error);
                    continue;
                }

#if UNITY_5
texture = new NTexture(bundle.LoadAllAssets()[0]);
#else
NTexture texture = new NTexture((Texture2D)bundle.mainAsset);
#endif

                bundle.Unload(false);
            }
            else
            {
                texture = new NTexture( www.texture);

            }
            

            texture.refCount++;
			
			_pool[item.url] = texture;

			if (item.onSuccess != null)
				item.onSuccess(texture);
		}
		else
		{
			if (item.onFail != null)
				item.onFail(www.error);
		}
	}

	_started = false;
}

`

Facing item Renderer problem.

Hi!

i m facing problem in making ItemRenderer.
1-created itemrender as usual
2-make a child label.
3-label Width connect with container width.

container height connected with label hight.

(i have simplified this problem here but even applying there steps you will find problem)

item Renderer problem + projects

Bitmap Fonts

Creation of Bitmap fonts takes took much time.
1- use littera to create sprite.
2- use showbox to unpack this sprite.
3-then import , include and assign characters to every sprite.

if some thing wrong, u have to do all these steps again.
Seriously this is too much manual work.

may be i have done some overhead but character assigning is too much work.

I have used Textmesh pro untiy , where u just have to assign font ,simple settings
and ur font is ready.

it would be much more convenient if Add font automation in editor.
Thanx

Adjust Item Size with respect to children

Does "Association" work with child to parent property?

means i have item ItemRenderer it has two labels , title and description ,
description.autosize = height;
and title has constant height ,

now problem is how can i assign..?
ItemRenderer.height = title.height + description.height;

can i achieve it using association?

Scroll Events

FairyGui ScrollView has just two events , onPullDownRelease , onPullUpRelease ,it seems no way to create Animations Like this

but if you have any idea it is more better...

I have tried listView in NGUI where i made detailed scroll Events , Please take a look on it so it could be implemented in fairyGui ..

`public class ScrollEvents : MonoBehaviour
{

public UnityEvent OnPullDownStarted;
public UnityEvent OnPullDowned;
public UnityEvent OnPullDownStartEnding;
public UnityEvent OnPullDownEnded;




public UnityEvent OnPullUpStarted;
public UnityEvent OnPullUped;
public UnityEvent OnPullUpStartEnding;
public UnityEvent OnPullUpEnd;


public class scrollEvent : UnityEvent<float> { };

public scrollEvent OnPullDownScroll;
public scrollEvent OnPullUpScroll;




[Range(0, 100)] public int pullDownStartThreshold = 50;
[Range(0 ,250)] public int pullDownThreshold = 100;
[Range(0, 100)] public int pullDownEndThreshold = 50;

[Range(0, 100)] public int pullUpStartThreshold = 50;
[Range(0, 250)] public int pullUpThreshold = 100;
[Range(0, 100)] public int pullUpEndThreshold = 50;


private UIScrollView scrollView;
private UIPanel panel;


private bool moving;
private bool dragging;


private bool pullDownStarted;
private bool pullDowned;
private bool pullDownStartEnding;

private bool pullUpStarted;
private bool pullUped;
private bool pullUpStartEnding;



void Awake()
{

    panel = GetComponent<UIPanel>();
    scrollView = GetComponent<UIScrollView>();

    scrollView.onDragStarted += OnDragStarted;
    scrollView.onDragFinished += OnDragFinished;
    scrollView.onStoppedMoving += OnStopMoving;




    OnPullDownStarted = new UnityEvent();
    OnPullDowned = new UnityEvent();
    OnPullDownStartEnding = new UnityEvent();
    OnPullDownEnded = new UnityEvent();




    OnPullUpStarted = new UnityEvent();
    OnPullUped = new UnityEvent();
    OnPullUpStartEnding = new UnityEvent();
    OnPullUpEnd = new UnityEvent();

    
    OnPullDownScroll = new scrollEvent();
    OnPullUpScroll = new scrollEvent();
}





private void OnDragStarted()
{
    dragging = moving = true;
}


private void OnDragFinished()
{
    dragging = false;
}



private void OnStopMoving()
{
    moving = false;
    resetAllStates();
}




private Vector3 GetScrollViewConstraint()
{
    Bounds b = scrollView.bounds;
    return panel.CalculateConstrainOffset(b.min, b.max);
}








void Update()
{
    if (moving)
    {
        Vector3 constraint = GetScrollViewConstraint();

        if (constraint.y == 0)
        {
            CheckAnyPendingEvents();
            return;
        } 


        if (constraint.y > 0)
        {
            if (constraint.y > pullDownStartThreshold && pullDownStarted || pullDowned)
            {

                float scrollValue = (constraint.y - pullDownStartThreshold) / (pullDownThreshold - pullDownStartThreshold);
                scrollValue = Mathf.Clamp01(scrollValue);

                if (OnPullDownScroll != null) OnPullDownScroll.Invoke(scrollValue);
            }


            if (constraint.y > pullDownThreshold && pullDownStarted && pullDowned == false)
            {
                if (OnPullDowned != null) OnPullDowned.Invoke();
                pullDowned = true;
            }


            else if (constraint.y < pullDownThreshold && pullDowned && pullDownStartEnding == false)
            {
                if (OnPullDownStartEnding != null) OnPullDownStartEnding.Invoke();
                pullDownStartEnding = true;
            }


            else if (constraint.y > pullDownStartThreshold && pullDowned == false && pullDownStarted == false && dragging)
            {
                if (OnPullDownStarted != null) OnPullDownStarted.Invoke();
                pullDownStarted = true;
            }


            else if (constraint.y < pullDownEndThreshold && (pullDownStarted || pullDowned))
            {
                if (OnPullDownEnded != null) OnPullDownEnded.Invoke();
                resetAllStates();
            }
        }
        else if (constraint.y < 0)
        {
            if (constraint.y < -pullUpStartThreshold && pullUpStarted || pullUped)
            {
                float scrollValue = (constraint.y - pullUpStartThreshold) / (pullUpThreshold - pullUpStartThreshold);
                scrollValue = Mathf.Clamp01(Mathf.Abs(scrollValue));

                if (OnPullUpScroll != null) OnPullUpScroll.Invoke(scrollValue);
            }



            if (constraint.y < -pullUpThreshold && pullUpStarted && pullUped == false)
            {
                if (OnPullUped != null) OnPullUped.Invoke();
                pullUped = true;
            }




            else if (constraint.y < -pullUpStartThreshold && dragging && pullUpStarted == false && pullUped == false)
            {
                if (OnPullUpStarted != null) OnPullUpStarted.Invoke();
                pullUpStarted = true;
            }



            else if (constraint.y > -pullUpThreshold && pullUped && pullUpStartEnding == false)
            {
                if (OnPullUpStartEnding != null) OnPullUpStartEnding.Invoke();
                pullUpStartEnding = true;
            }



            else if (constraint.y > -pullUpEndThreshold && (pullUpStarted || pullUped))
            {
                if (OnPullUpEnd != null) OnPullUpEnd.Invoke();
                resetAllStates();
            }
        }
    }
}






private void CheckAnyPendingEvents()
{
    if (pullDowned || pullDownStartEnding || pullDownStarted)
    {
        if (OnPullDownEnded != null) OnPullDownEnded.Invoke();
        resetAllStates();
    } 



    if (pullUpStarted || pullUpStartEnding || pullUped)
    {
        if (OnPullUpEnd != null) OnPullUpEnd.Invoke();
        resetAllStates();
    }
}









private void resetAllStates()
{
    pullUpStartEnding = pullDownStartEnding = pullDownStarted = pullDowned = pullUpStarted = pullUped = false;
}




void OnDestroy()
{
    scrollView.onDragStarted -= OnDragStarted;
    scrollView.onDragFinished -= OnDragFinished;
    scrollView.onStoppedMoving -= OnStopMoving;

    OnPullDownStarted.RemoveAllListeners();
    OnPullDowned.RemoveAllListeners();
    OnPullDownStartEnding.RemoveAllListeners();
    OnPullDownEnded.RemoveAllListeners();



    OnPullUpStarted.RemoveAllListeners();
    OnPullUped.RemoveAllListeners();
    OnPullUpStartEnding.RemoveAllListeners();
    OnPullUpEnd.RemoveAllListeners();
    
    OnPullDownScroll.RemoveAllListeners();
    OnPullUpScroll.RemoveAllListeners();
}

}
`

Label Width problem

i want chat like this list items but

label configuration 1 this

layout code

` var margin = 10;

    icon.xy = new Vector2(margin, 5);
    var iconAsociatedHeight = icon.y + icon.height + margin;


    label.x = icon.x + icon.width + margin * 2;
    label.y = icon.y;


    var labelWidth = button.width - label.x - 10;

    if (label.width > labelWidth)
    {
        label.width = labelWidth;
    }


    backGround.x = label.x - 5;
    backGround.y = label.y - 5;


    backGround.height = label.height + 10;
    backGround.width = label.width + 10;


    var textAssoicatedHeight = backGround.y + backGround.height + 5;

    button.height =  Math.Max(textAssoicatedHeight, iconAsociatedHeight);`

result

lable configuration 2 this
code Same

result

Stage Camera

Hi!
i m working on an application where i have used both FairyGUI and UGUI.
Problem is when ever i shift from Fairy GUI Scene to UGUI scene. Stage Camera also popup there and leads some unexpected results.
Please take a look on it.

Unity Battery Daring Solution

Hi!
I was googling "How i can Reduce Battery Drain Problem in Unity for App".
i found this post , post

i think it would be better to share with you. and if it is possible include in fairy ui.

Unity re-Render every thing in Every Frame , wither it is needed or not , including fairy-ui components.
there is a solution just for fairy ui.

assume we are working on just app development ,means no 3d model.

Render only when its need to render by using upper mentioned post.
RenderOnce()

and now how to detect it needs to render or not ?
it could be done , by detecting input (by mouse movment , touchCount ), SizeChanged , PositionChanged for fairy-UI Component.

there All things Would be Customized, if any one wants to make renderer on every frame , he can do.

if you have better approach Plz apply it.

like render only needed components.
like Starling

Some Queries

Thanx For This Great Asset πŸ‘
There is no other UI asset on assetStore even closer to it.

i just started learning it.
i have some queries.

1- Constant Physical size is same on mobile , these are my settings

2- Image height and width both are associated with Controller height and Width , image resize well in fairy Editor Iphone 5 Ipad but in unity editor, it remains designer size and do not resize to game view ,it should fill game view. if i m doing wrong plz correct me..

3- i have tried to increase scrolling speed by "_list.scrollPane.scrollSpeed = 300" but no effect.

4-i could not understand majority of tutorials because all are in chines expect "FairyGUI Tutorials 1"

Scrolling Speed

Is there any way to increase List Scrolling Speed ..?

_list.scrollPane.scrollSpeed = 1000;

but it dones not have effect ..

Road Map

Kindly Can you Define your Road Map ..?
what are your future planes for this , what things you are going to introduce in next versions.
just roughly , to get idea ..

Images Loading

Images are not loading

FairyGUI: texture 'atlas0.png' not found in TileView

in Fairy Editor
image

but in unity
image

List View Selection

Hi!

Is there any Event like OnItemSelect , Or OnItemsSelected

and other this is Selection does not retains After item go off the screen . and come back.

1- Select mail 1 item
image

2- Scroll and let item go off the Screen
image

3-Scroll To Previous item and it is not selected
image

List View Pagination Item Snapping Problem

Horizontal Pagination List in this example
When width change it draw only items which can fit in , means no extra cutting item , but here things are not as same , Fairy ui

Feathers UI uses concept of pages so when you say 10 items in a page then UI always show 10 items even if UI is able to show 20, so if you can implement something like that in future (After fixing all current list related issues) that’d be great feathers Example

Argument is out of range in ListView

1-List View With Pagination
2-colums count = 3 , row Count = 2,

main.ListView.itemRenderer = ItemGoingToRender;
main.ListView.numItems = 5;

Error

ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
System.Collections.Generic.List`1[FairyGUI.GList+ItemInfo].get_Item (Int32 index) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:633)
FairyGUI.GList.HandleScroll3 (Boolean forceUpdate) (at Assets/Fairy Gui/Scripts/UI/GList.cs:1990)
FairyGUI.GList.HandleScroll (Boolean forceUpdate) (at Assets/Fairy Gui/Scripts/UI/GList.cs:1615)
FairyGUI.GList.RefreshVirtualList (System.Object param) (at Assets/Fairy Gui/Scripts/UI/GList.cs:1434)
FairyGUI.GList.set_numItems (Int32 value) (at Assets/Fairy Gui/Scripts/UI/GList.cs:1281)
Test.Start () (at Assets/Test.cs:78)

Xlua support

Is it possible to add support for xLua from Tencent which is pretty popular besides uLua & ToLua. Thanks.

Not Crisp

When using Constant Physical size UI does not look Crisp. on mobile
example

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.