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();
            }
        }
    }
}
相关推荐
霍格沃兹测试开发学社测试人社区1 小时前
揭开帷幕:如何实现UI回归测试的全面自主化
人工智能·ui·自动化
半吊子全栈工匠16 小时前
软件产品的10个UI设计技巧及AI 辅助
人工智能·ui
Vanranrr19 小时前
表驱动编程实战:让 UI 逻辑既清晰又好维护
c++·ui
lsp程序员0101 天前
使用 Web Workers 提升前端性能:让 JavaScript 不再阻塞 UI
java·前端·javascript·ui
咖啡の猫2 天前
PC 端常用 UI 组件库
ui
我的xiaodoujiao2 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 25--数据驱动--参数化处理 Excel 文件 2
前端·python·学习·测试工具·ui·pytest
top_designer2 天前
Firefly 样式参考:AI 驱动的 UI 资产“无限”生成
前端·人工智能·ui·aigc·ux·设计师
Dr.勿忘3 天前
Unity一分钟思路---UI任务条:宝箱位置如何准确卡在百分比位置上
ui·unity·游戏程序·屏幕适配
覆东流4 天前
Photoshop图形工具组与图层样式
ui·photoshop
集成显卡4 天前
AI取名大师 | uni-app + Wot UI 跟随设备自动切换明暗主题
人工智能·ui·uni-app·外观配色