用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

测试

2019-04-28 作者:不懂放弃举报

[c#]代码库

using UnityEngine;
using System.Collections;

/// <summary>
/// 支持暂停的 MonoBehaviour 基类.
/// 游戏中需要暂停功能的逻辑都应该继承该类并将逻辑写到 OnUpdate 及 OnLateUpdate 方法中, 这两个方法在设置为暂停时不会被调用.
/// </summary>
public class PausingBehaviour : MonoBehaviour
{
    /// <summary>
    /// 是否暂停逻辑处理.
    /// </summary>
    public static bool pause { get; set; }

    static PausingBehaviour()
    {
        pause = false;
    }

    private bool _isPaused;

    //没加:protected virtual
    void OnEnable()
    {
        _isPaused = pause;
    }
    /// <summary>
    /// 没加:protected virtual
    /// </summary>
    protected virtual void Update()
    {
        if (!pause)
        {
            if (_isPaused)
            {
                _isPaused = false;
                this.OnPauseExit();
            }

            this.OnUpdate();
        }
        else
        {
            if (!_isPaused)
            {
                _isPaused = true;
                this.OnPauseEnter();
            }
        }
    }

    /// <summary>
    /// 可暂停的逻辑更新方法.
    /// </summary>
    protected virtual void OnUpdate()
    {
        //Debug.Log("{OnUpdate} pause = " + PausingBehaviour.pause);

    }

    //没加:protected virtual
    void LateUpdate()
    {
        if (!pause)
        {
            this.OnLateUpdate();
        }
    }

    /// <summary>
    /// 可暂停的逻辑更新方法.
    /// </summary>
    protected virtual void OnLateUpdate()
    {
    }

    /// <summary>
    /// 暂停开始时会调用该方法.
    /// </summary>
    protected virtual void OnPauseEnter()
    {
        Debug.Log("Enter");

    }

    /// <summary>
    /// 暂停结束时会调用该方法.
    /// </summary>
    protected virtual void OnPauseExit()
    {
        Debug.Log("Exit");
    }
}


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。