等待视图__WaitingView

public class WaitingView : MonoSingleton<WaitingView>, IPointerClickHandler
{

    public static WaitingView mInstance;

    Action<object> _CBTimeout;
    object _Param;

    Coroutine _TimeCounter;

    private List<GameObject> _ExecutableGos = new List<GameObject>();

    public GameObject _UIObject;
    public GameObject _UIObjectText;

    private bool _ForceWait;

    public override void Awake()
    {
        mInstance = this;
        base.Awake();
        gameObject.SetActive(false);
    }
    

    public void StartWait(float timeout, Action<object> cb = null,object param = null,bool forceWait = false)
    {
        _UIObject.SetActive(true);
        _UIObjectText.SetActive(false);

        StartWaiting(timeout,cb,param,forceWait);
    }

    public void StartWaitWithoutImage(float timeout, Action<object> cb = null, object param = null, bool forceWait = false)
    {
        _UIObject.SetActive(false);
        _UIObjectText.SetActive(false);

        StartWaiting(timeout, cb, param, forceWait);
    }

    public void StartWaitAddText(float timeout,string title, Action<object> cb = null, object param = null, bool forceWait = false)
    {
        if (!String.IsNullOrEmpty(title))
        {
            _UIObjectText.GetComponentInChildren<LocalizedText>().SetLocalizationName(title);
        }

        _UIObjectText.SetActive(true);
        _UIObject.SetActive(false);

        StartWaiting(timeout, cb, param, forceWait);
    }

    void StartWaiting(float timeout, Action<object> cb, object param, bool forceWait)
    {
        gameObject.SetActive(true);

        _CBTimeout = cb;
        _Param = param;
        _ForceWait = forceWait;
        _TimeCounter = StartCoroutine(TimeCounter(timeout));
    }

    void CloseWaiting() {

        gameObject.SetActive(false);

        _ForceWait = false;

        if (_TimeCounter != null)
        {
            StopCoroutine(_TimeCounter);
        }
    }

    IEnumerator TimeCounter(float timeout)
    {
        yield return new WaitForSeconds(timeout);

        if (_CBTimeout != null)
        {
            _CBTimeout(_Param);
        }

        CloseWaiting();
    }

    public void StopWait()
    {
        CloseWaiting();
    }

    public bool IsWaitingView() {

        if (_UIObject.activeInHierarchy || _UIObjectText.activeInHierarchy)
        {
            return true;
        }
        else {

            return false;
        }
    }

    public bool IsForceWait() {

        return _ForceWait;
    }

    #region EventData

    public void AddExecutableObject(GameObject go) {

        if (!_ExecutableGos.Contains(go))
        {
            _ExecutableGos.Add(go);
        }

    }

    public void RemoveExecutableObject(GameObject go) {

        if (!_ExecutableGos.Contains(go))
        {
            _ExecutableGos.Remove(go);
        }
    }


    public void OnPointerClick(PointerEventData eventData)
    {
        PassEvent(eventData, ExecuteEvents.pointerClickHandler);
    }

    //把事件透下去
    public void PassEvent<T>(PointerEventData data, ExecuteEvents.EventFunction<T> function) where T : IEventSystemHandler
    {
        if (_ExecutableGos.Count == 0)
        {
            return;
        }

        List<RaycastResult> results = new List<RaycastResult>();
        EventSystem.current.RaycastAll(data, results);

        for (int i = 0; i < results.Count; i++)
        {

            if (_ExecutableGos.Contains(results[i].gameObject))
            {
                ExecuteEvents.Execute(results[i].gameObject, data, function);
            }
        }
    }

    #endregion
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值