ZProRx 架构也是类似MVC的分层,这一节主要介绍如何实现表示层与数据层的绑定。
目前只支持与Untiy表示层(UGUI/GameObject)的绑定。
把属性与Unity元素进行Bind 这部分提供了如何与UI能进行自动化的绑定,动态更新等机制,同时对一些常用框架的支持,比如上接UGUI、向下与UniRX、ZECS等架构对接。同时也支持创建动态UIItem,比如对一些列表的支持等。当然这里的可视化绑定也适用于3D表现。 需求实例(以下面率土为例,列举常用UI Item)
可以分解出如下类型的属性,以及对应的UI表现。
public class Weapon {
[PropertyDescription("power", "a power data")]
public ZProperty power = new ZProperty();
}
public class Person {
public string TestID;
[PropertyDescription("等级", "玩家的等级信息")]
public ZProperty rank = new ZProperty();
[PropertyDescription("血量", "玩家的名字")]
[PropertyUIItemRes("Test/Image")]
public ZProperty blood = new ZProperty();
[PropertyDescription("weapon007", "a power weapon")]
public ZProperty weapon = new ZProperty();
}
如下图,可以看我们在定义表示层时,通过名字与ZProperty 属性进行绑定。(后续考虑自动生成表示层、以及表示层的Check功能)
GameObject.Find("Monster/Arm/Hand")
MonoBehaviour 的以下行为支持,目前只支持前三个
Awake()
Start()
Update()
FixedUpdate()
LateUpdate()
OnGUI()
OnDisable()
OnEnable()
OnDestroy()
目前只支持与Button进行绑定。 对于3D View需要支持可点击的3D对象(控件), 需要支持RTClickable
脚本的动态绑定。 RTClickable
如果想要生效,需要依赖EventSystem和Physics RayCaster组件绑定Camera上。 详细的应用参考EventSystem应用于3D GameObject
对于Unity Event的绑定,大概分两种情况,一种是UGUI相关,由ZViewBuildTools 进行绑定,比如 Button,通过
btn.onClick.AddListener(()=> {
prop.Invoke();
});
其是通过对UnityEvent
的操作。
一种对于GameObject的三维相关事件,比如 基于EventTrigger的单击事件等。这里未来还需要对加回 UniRX.Trigger的支持。
定义基本的丰富的预制件,如下
Data为预留的子结点,用于显示其Title,由[PropertyDescription] Attribute进行定义。
支持以下共通的预留的子结点名
public static class ZViewCommonObject{
public static string Name = "Name";
public static string Description = "Description";
public static string Data = "Data";
public static string Icon = "Icon";
//public static string Count = "Count";
public static string Bar = "Bar";
public static string Root = "Root";
public static string Items = "Items";
public static string Model = "Model";
public static string Minute = "Minute";
public static string Second = "Second";
}
更多的控件请参考项目,如下为Unity Package中的Demo 展示 ,列举也目前支持的大部分预制。
项目开源地址:https://github.com/bennychao/ZProRx.Lib
下载安装:(ZP.Lib.Server 是ZRroRx的核心库,后续其它功能库陆续开放中)
>dotnet add package ZP.Lib.Server --version 1.0.3
ZProRx.Lib Unity Package 1.0.3 (用于在Untiy中使用)下载地址:
https://github.com/bennychao/ZProRx.Lib/releases/
https://github.com/bennychao/ZProRx.Lib/Publish/ZProRx.Lib.package
【ZProRx 重装上阵】 第二回 矩阵
【ZProRx 重装上阵】 第四回 网络