Home

Awesome

MetaJUI v0.4

MetaJUI是为JEngine定制的UI框架,当然你也可以通过很简单的修改,移植到自己的工程项目

快速使用

1.导入到项目

UnityProject 目录的下的所有文件全部Copy到自己的Unity工程目录下

2.创建自己的UI预制体

打开Unity,点击上方的 MetaTools/UI自动生成器 (快捷键:Ctrl+Shift+Alt+U)

3.自动生成代码

4.游戏中的使用方法

打开普通UI

UITool.Open<UITest>();

关闭普通UI

UITool.Close<UITest>();

打开栈UI

UITool.OpenStack<UITest1>();
UITool.OpenStack<UITest2>();
UITool.OpenStack<UITest3>();

关闭栈UI

UITool.CloseStack();
UITool.CloseStack();
UITool.CloseStack();

获取到一个UI

UITool.Get<UITest>();

清除所有UI,包括缓存

UITool.Clear();

5.自定义路径

打开Assets/3rd/MetaJUI/Editor/UIAutoCreate/UIAutoCreatePathSetting 所有路径都可以自定义修改

6.修改UI生成代码模板

模板文件在Assets/3rd/MetaJUI/Editor/UIAutoCreate/Template/ 目录下 可以自由修改为你想要的模板

7.使用虚拟列表

因为热更层使用到了框架层的委托类型,第一次使用要进行ILRuntime的委托注册 RegisterMethodDelegateHelper.Register()

appdomain.DelegateManager.RegisterMethodDelegate<Int32, GameObject>();

RegisterFunctionDelegateHelper.Register()

appdomain.DelegateManager.RegisterFunctionDelegate<Int32, Int32>();

设置好虚拟列表预制体ScrollViewVertical

在热更层的UI打开界面进行注册

注册高度

GetView().scrollTestRect.OnHeight += (index) => { return 150; };

注册刷新事件

GetView().scrollTestRect.OnFill += (index, go) =>
        {
            go.GetComponentInChildren<Text>().text = index.ToString();
        };

初始化列表大小

GetView().scrollTestRect.InitData(100);

8.使用公共UI

公共UI需要以UICommon前缀命名,生成的代码也会将UI预制体的名字作为类名,所以需要避免重复

9.使用红点系统

初始化结构(以我自己的项目为例, RedPointSystemConst为一个枚举)

        RedPointNode mainNode = new RedPointNode(RedPointSystemConst.main.ToString());
        {
            //家园
            RedPointNode jiayuanNode = mainNode.AddChildNode(RedPointSystemConst.家园.ToString());
            {
                //仓库
                RedPointNode cangkuNode = jiayuanNode.AddChildNode(RedPointSystemConst.家园_仓库.ToString());
                {
                    cangkuNode.AddChildNode(RedPointSystemConst.家园_仓库_装备.ToString());
                }

                //孵化槽
                RedPointNode fuhuacaoNode = jiayuanNode.AddChildNode(RedPointSystemConst.家园_孵化槽.ToString());
                {
                    fuhuacaoNode.AddChildNode(RedPointSystemConst.家园_孵化槽_孵化蛋.ToString());
                    fuhuacaoNode.AddChildNode(RedPointSystemConst.家园_孵化槽_抽奖券.ToString());
                    fuhuacaoNode.AddChildNode(RedPointSystemConst.家园_孵化槽_配对.ToString());
                }
            }

            //宠物
            RedPointNode chongwuNode = mainNode.AddChildNode(RedPointSystemConst.宠物.ToString());
            {
                //宠物卡片
                RedPointNode kapianNode = chongwuNode.AddChildNode(RedPointSystemConst.宠物_卡片.ToString());
                {
                    RedPointNode kapianshuxingNode = kapianNode.AddChildNode(RedPointSystemConst.宠物_卡片_详情属性.ToString());
                    {
                        kapianshuxingNode.AddChildNode(RedPointSystemConst.宠物_卡片_详情属性_升级.ToString());
                    }
                    kapianNode.AddChildNode(RedPointSystemConst.宠物_卡片_详情进化.ToString());
                    kapianNode.AddChildNode(RedPointSystemConst.宠物_卡片_详情觉醒.ToString());
                }
            }
        }
        
        rps = new RedPointSystems();
        rps.Init(mainNode);

注册红点数量变化事件


        RedPointSystemManager.Ins.rps.Register(RedPointSystemConst.家园.ToString(), (node) =>
        {
                ShowRedPoint(node.pointCount > 0);
        });
        
        ...
        
        RedPointSystemManager.Ins.rps.Register(RedPointSystemConst.家园_仓库.ToString(), (node) =>
        {
                ShowRedPoint(node.pointCount > 0);
        });
        
        ...
        
        RedPointSystemManager.Ins.rps.Register(RedPointSystemConst.家园_仓库_装备.ToString(), (node) =>
        {
                ShowRedPoint(node.pointCount > 0);
        });

派发事件


        RedPointSystemManager.Ins.rps.Dispatch(
            RedPointSystemConst.家园_仓库_装备.ToString(),
            PlayerData.GetNewItemData());

MetaJUI优势

更新日志

v0.4(2022.4.5)

TodoList

支持我

友情链接

JEngine 小白也能快速上手,轻松制作可以热更新的游戏