本篇我们回到规则1:不直接在任何UGUI上面挂代码,所有的UGUI以perfab形式保存(后期可以拓展用Assetbundle或Addressable等)。
我们在完成预设制作后把perfab储存到一个文件夹中
这里为了演示仅实现了血的文字显示、加血、减血按钮
完成UI制作后,就可以把场景中的UI删除了。这里建议团队协作的时候,每个人使用自己的场景来维护制作UI,不要在主场景中操作。
完成Prefab后我们右键注册一下这个Panel:
然后就会在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:
但实际项目中我们并不需要用到这个按钮,因为我已经在EeveeUIFramework/UIConfig.asset创建了此管理ScriptableObject。如下图,完成注册的UI界面会在这里留下UI的名字和预设的绑定关系。
而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;
}
}
篇幅较长了,下一篇我们讲如何获取选中物体的名字、设置赋值关系、创建对应脚本