唐老狮 UGUI 实战学习笔记

仅作学习,不做任何商业用途

不是源码,不是源码!

是我通过"照虎画猫"写的,可能有些小修改

不提供素材,所以应该不算是盗版资源,侵权删 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

//首先,写成抽象类用于继承
public abstract class 面板基类 : MonoBehaviour
{
    #region 基础变量
    //控制淡入淡出速度
    public float ShowOrHideSpeed = 10;

    //控制显示隐藏的变量
    public bool IsTure;

    //隐藏面板操作后的响应事件
    private UnityAction isCallBack;
    #endregion
    #region 获取画布组 
    //这里首先获得画布管理组件
    public CanvasGroup canvasGroup;
    protected virtual void Awake() {

        canvasGroup = GetComponent<CanvasGroup>();
        if (canvasGroup == null) {
            canvasGroup = this.gameObject.AddComponent<CanvasGroup>();
        }
    }
    #endregion
    #region 子面板重写监听方法
    //写一个必须要重写的抽象方法
    protected abstract void Init();

    protected virtual void Start() {
        Init();
    }
    #endregion
    #region 显隐函数
    public virtual void ShowMe() {
        //alpha为0时为透明
        //alpha为1时为显示
        IsTure = true;
        //初始化为0,后面会一点点加上
        canvasGroup.alpha = 0;

    }
    public virtual void HideMe(UnityAction action) {
        IsTure = false;
        //初始化为1,后面会一点点减去
        canvasGroup.alpha = 1;
        isCallBack = action;
    }
    #endregion
    // Update is called once per frame
    void Update()
    {
        #region 触发显示
        //控制显示
        if (IsTure = true && canvasGroup.alpha != 1) {
            canvasGroup.alpha += ShowOrHideSpeed * Time.deltaTime;
            if (canvasGroup.alpha >= 1) {
                canvasGroup.alpha = 1;
            }
        }
        #endregion
        #region 触发隐藏
        //控制隐藏
        if (IsTure = false && canvasGroup.alpha != 0) {
            canvasGroup.alpha -= ShowOrHideSpeed * Time.deltaTime;
            if (canvasGroup.alpha <= 0) {
                canvasGroup.alpha = 0;

                // 调用存储的方法
                isCallBack?.Invoke();
            }

        }
        #endregion
    }
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值