EeveeUI框架3——UGUI脚本、物体分离设计

本篇我们回到规则1:不直接在任何UGUI上面挂代码,所有的UGUI以perfab形式保存(后期可以拓展用Assetbundle或Addressable等)。

我们在完成预设制作后把perfab储存到一个文件夹中

image.png

这里为了演示仅实现了血的文字显示、加血、减血按钮

完成UI制作后,就可以把场景中的UI删除了。这里建议团队协作的时候,每个人使用自己的场景来维护制作UI,不要在主场景中操作。

完成Prefab后我们右键注册一下这个Panel:

image.png

然后就会在Scripts/UI的路径下创建出一个同名+_UIControl的.cs脚本,这个脚本的格式来自于EeveeUIFramework/Resources/UIControl.txt。

然后就可以编辑此脚本实现UI相关绑定、事件绑定等操作。即为我们MVC中的View层。


上面是使用方法,下面讲解一下如何实现注册及创建脚本,也就是本架构的核心之一:
首先创建了一个继承自ScriptableObject的UIConfig类。

如果不懂ScriptableObject的可以拓展阅读或自行百度:https://www.jianshu.com/p/fd77f0592631

UIConfig通过标注CreateAssetMenu特性实现了可以在文件中右键-Creat-创建UI管理SO:

image.png

但实际项目中我们并不需要用到这个按钮,因为我已经在EeveeUIFramework/UIConfig.asset创建了此管理ScriptableObject。如下图,完成注册的UI界面会在这里留下UI的名字和预设的绑定关系。

image.png

而UIConfig的单例让它在运行时也可以便捷地获取到这个UI名和预设绑定关系(其实还有一层脚本绑定关系)。

UIConfig的代码很简单,其实就是储存了一个List和实现了一个单例,如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 创建UI管理SO,一个项目仅需要创建一个,这里我们放到Resources下面,命名为UIConfig
/// 然后就关闭此处的创建通道,如果UIConfig文件被误删了,就打开此处的创建重新创建一个
/// </summary>
[CreateAssetMenu(fileName = "UIConfig", menuName = "创建UI管理SO", order = 1)]
public class UIConfig : ScriptableObject
{
    public List<UIPanelConfig> m_UIList = new List<UIPanelConfig>();

    protected static UIConfig instance = null;

    /// <summary>
    /// 单例
    /// </summary>
    public static UIConfig Instance
    {
        get
        {
            if (instance == null)
            {
                instance = (UIConfig)Resources.Load("UIConfig");
            }
            return instance;
        }
    }

    /// <summary>
    /// 每个页面需要保存的参数数据
    /// </summary>
    [System.Serializable]
    public struct UIPanelConfig
    {
        public string Name;
        public GameObject GameObject;
    }
}

篇幅较长了,下一篇我们讲如何获取选中物体的名字、设置赋值关系、创建对应脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值