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();
            }
        }
    }
}
相关推荐
speedoooo5 小时前
未来的App不再需要菜单栏?
前端·ui·容器·小程序·web app
weixin_446260855 小时前
shadcn/ui - 打造个性化组件库的利器
ui
测试老哥6 小时前
UI自动化测试—Jenkins配置优化
自动化测试·软件测试·python·测试工具·ui·jenkins·测试用例
serve the people7 小时前
简化版滑块验证(仅 X 轴滑动 + 美化 UI)
ui
百锦再8 小时前
与AI沟通的正确方式——AI提示词:原理、策略与精通之道
android·java·开发语言·人工智能·python·ui·uni-app
Just_Paranoid9 小时前
【Android UI】Android Tint 用法指南
android·ui·tint·porterduff·colorfilter
reddingtons1 天前
PS 参考图像:线稿上色太慢?AI 3秒“喂”出精细厚涂
前端·人工智能·游戏·ui·aigc·游戏策划·游戏美术
喜欢踢足球的老罗1 天前
Swagger UI 自定义请求头:从用户配置到请求注入的完整流程解析
ui
Just_Paranoid1 天前
【Android UI】Android Drawable XML 标签解析
android·ui·vector·drawable·shape·selector
jinxinyuuuus1 天前
Wallpaper Generator:前端性能优化、UI状态管理与实时渲染的用户体验
前端·ui·性能优化