简单UI框架

本文介绍了Unity中一个简单的UI框架设计,包括BaseUI用于记录UI与Controller的解耦,UIManger管理UI组件的打开关闭,EventManager实现模块间的交互,ResourcesManager处理资源加载,DataHelper封装数据解析,Common Extension提供Unity方法的拓展,以及Singleton和NetworkManager。该框架易于上手,适合小型项目,但拓展性和效率有待提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.UI框架核心方法
● BaseUI会记录UI的名字(枚举)和Controller用来将UI与具体操作方法解耦
● UIManger利用字典记录所有的UI组件,然后提供一些打开关闭UI的方法
● EventManager(事件系统)来实现模块与模块之间的交互,事件系统也分很多种实现方式,都是观察者设计模型的典型应用,利用一个关键字注册多个方法,然后在利用这个关键字激活调用已经住的方法。也是C#中委托的一种典型用法。广播形式、通知形式等。
2.UI框架拓展方法
● ResourcesManager(资源管理器),封装一些加载Resources资源的方法,同步加载,异步加载,加载并实例化等方式的方法。
● DataHelper(数据解析器),对Xml、Json(LitJson、JsonFX)、Protobuf等数据格式序列化与反序列化插件的进一步封装,方便调用。
● Common Extension(公共拓展组件)利用泛型和拓展方法对Unity中的方法进行进一步的封装,加快开发速度。
● Singleton(单例)
● NetworkManager,负责与后台数据的下载、上传。
3.简易UI框架的优缺点
● 容易上手使用
● 针对C#新手相对容易理解
● 只适合很小的项目
● 拓展性很差
● 逻辑会堆在MonoBehaviour的脚本下,效率降低

-------------->>>>>>>>>>>>>>----------------
MJ@D de UI Frame
------------->>>>>>>>>>>>>>-----------------

DataHelper(数据解析器) - - >> LitJson.

BaseUI:
->Baseview / BaseWindow
->UIManager
->ResourceManager

Baseview
界面初始化和销毁,按钮点击事件监听,Toggle值变化监听

using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.Events;

public abstract class BaseView : MonoBehaviour
{
   
    //只在对象显示状态销毁调用
    public void OnDestroy()
    {
   
        Destroy();
    }

    //初始化
    public virtual void Init(params object[] paralist)
    {
   
    }

    //释放回调
    public virtual void Destroy()
    {
   
        Notification.Instance.RemoveAllEvent(this);
    }


    /// 添加button事件监听
    public void AddButtonClickListener(Button btn, UnityAction action)
    {
   
        if (btn == null)
        {
   
            return;
        }

        btn.onClick.AddListener(() => {
   
            SoundManager.Instance.PlaySfx(GameSound.Click_sfx_Id);
            action(); 
        });
        //btn.onClick.AddListener(BtnPlaySound);
    }

    public void AddToggleClickListener(Toggle toggle, UnityAction<bool> action)
    {
   
        if(toggle == null)
        {
   
            return;
        }
        toggle.onValueChanged.AddListener((_value) => {
   
            SoundManager.Instance.PlaySfx(GameSound.Click_sfx_Id);
            action(_value);
        });
        //btn.onClick.AddListener(BtnPlaySound);
    }
}

BaseWindow
窗口的模态处理,遮罩控制

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BaseWindow : BaseView
{
   
    public bool isSmartClose = true; //是否点击遮罩关闭
    public bool isLucid = false;//是否透明遮罩

    public override void Init(params object[] paralist)
    {
   
        base.Init(paralist);
        SetMaskView(isSmartClose,isLucid);
    }

    //设置遮罩
    public void SetMaskView(bool isSmartClose, bool isLucid)
    {
   
       int width = Screen.width;
       int height = Screen.height;
       Color newColor=new Color(0/255F,0/255F,0/255F,100/255F);
       
       if(!!isLucid)
       {
   
           newColor.a = 0;
       }

       GameObject img = new GameObject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值