Unity的UI面板基类

使用这个组件实现淡入淡出

复制代码
public abstract class BasePanel : MonoBehaviour
{
    //控制面板透明度 用于淡入淡出
    private CanvasGroup canvasGroup;
    //淡入淡出速度
    private float alphaSpeed = 10;
    //隐藏还是显示
    public bool isShow = false;
    //隐藏完毕后做的事
    private UnityAction hideCallBack = null;
    
    protected virtual void Awake()
    {
        //获取面板挂载的组件
        canvasGroup = GetComponent<CanvasGroup>();
        //如果忘记添加脚本
        if (canvasGroup == null)
        {
            canvasGroup = this.gameObject.AddComponent<CanvasGroup>();
        }
    }
    //虚函数,让子类面板可以重写
    protected virtual void Start()
    {
        //调用注册方法
        Init();
    }

    /// <summary>
    /// 注册控件事件方法
    /// 子类必须实现
    /// </summary>
    public abstract void Init();

    /// <summary>
    /// 显示面板
    /// </summary>
    public virtual void ShowMe()
    {
        canvasGroup.alpha = 0;
        isShow = true;
    }
    /// <summary>
    /// 关闭面板
    /// </summary>
    public virtual void HideMe(UnityAction callBack)
    {
        canvasGroup.alpha = 1;
        isShow = false;

        hideCallBack = callBack;
    }
    // Update is called once per frame
    void Update()
    {
        //淡入
        //显示 并且 透明度不为1
        if (isShow && canvasGroup.alpha!=1)
        {
            //透明度从0加到1
            canvasGroup.alpha += alphaSpeed * Time.deltaTime;
            if (canvasGroup.alpha>=1)
            {
                canvasGroup.alpha = 1;
            }
        }
        //淡出
        //不显示 并且 透明度不为0
        else if (!isShow && canvasGroup.alpha!=0)
        {
            //透明度从1减到0
            canvasGroup.alpha -= alphaSpeed * Time.deltaTime;
            if (canvasGroup.alpha <=0)
            {
                canvasGroup.alpha = 0;
                //淡出后 执行逻辑
                hideCallBack?.Invoke();
            }
        }
    }
}
相关推荐
laowangpython6 天前
Photoshop 2025 下载安装全攻略
其他·ui·photoshop
风华圆舞6 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
鲲穹AI超级员工6 天前
多款实用配色工具汇总,适配设计、UI 创作等多元场景
ui·色彩设计
UXbot6 天前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app
烂白菜6 天前
智码美形:华为云码道 × UI-UX-Pro-Max 高品质界面智能生成实践
ui·华为云·ux
像风一样的男人@6 天前
python --实现代理服务器
git·ui
风华圆舞6 天前
鸿蒙 Flutter 页面怎么感知防窥状态并调整 UI 可见性
flutter·ui·harmonyos
UXbot6 天前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
UXbot7 天前
原型设计工具如何帮助新人快速进入产品行业?
前端·低代码·ui·交互·团队开发·原型模式·web app
烈焰晴天7 天前
Codex 桌面端如何链接Figma MCP 服务器拿到 Figma设计稿精准尺寸等结构化数据 来精准还原UI
服务器·ui·figma