fairygui/FairyGUI-unity

Create a DataBind for FGUI

Closed this issue · 2 comments

我利用FGUI的"自定义数据"项,实现了一个DataBind系统,现在简单实现了TextField,TextInput,Button的绑定。

https://github.com/sericaer/FairyGUIStudy
https://github.com/sericaer/FairyGUI.DataBind

例如在TextField的"自定义数据"中设置一个绑定关系

{
	"bind": {
		"text": "count"
	}
}

在代码添加如下实现,就可以把TestData的count绑定到FairyGUI界面上。

using FairyGUI;
using FairyGUI.DataBind;
using System.ComponentModel;
using UnityEngine;

public class TextFieldBind : MonoBehaviour
{
    TestData testData;


    void Start()
    {
        testData = new TestData();

        UIPackage.AddPackage("TextFieldBind");

        var gComponent = UIPackage.CreateObject("TextFieldBind", "Component1").asCom;
        gComponent.BindDataSource(testData);

        GRoot.inst.AddChild(gComponent);
    }


    void Update()
    {
        testData.count++;
    }

    public class TestData : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public int count
        {
            get
            {
                return _count;
            }
            set
            {
                _count = value;

                OnPropertyChanged("count");
            }
        }

        private int _count;

        public TestData()
        {
            count = 0;
        }

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}




qipa commented

这个算是 inhouse需求,有需要自行添加即可,如果pr了反而污染库代码。
比如我们项目,整体UI框架基于lua,是不需要这种功能的