您的位置:首页 > 其它

控制物体是否运动的逻辑

2016-10-27 10:36 232 查看
先上代码....

using UnityEngine;
using System.Collections;

public abstract class GameTimeController:MonoBehaviour
{
public abstract void FixedUpdateGame();
public abstract void UpdateGame();
public abstract void LateUpdateGame();
}

public class myGameTimeController : GameTimeController  {

private static bool isStopGame = false;
/// <summary>
/// 控制是否暂停
/// </summary>
public static bool IsStopGame
{
get { return myGameTimeController.isStopGame; }
set { myGameTimeController.isStopGame = value; }
}

private static float runTime = 0;
private bool isOnTime = false;

private static float gameTime = 0;
/// <summary>
/// 脚本更新间隔
/// </summary>
public static float GameTime
{
get { return myGameTimeController.gameTime; }
set { myGameTimeController.gameTime = value; }
}

void Update()
{
if(isOnTime )
{
UpdateGame();
}
}

void FixedUpdate()
{
if(isOnTime =(IsRun()))
{
FixedUpdateGame();
}
}

void LateUpdate()
{
if(isOnTime )
{
LateUpdateGame();
}
}
/// <summary>
/// 判断是否到了更新的时间
/// </summary>
/// <returns></returns>
private bool LateTime()
{
if (gameTime <= 0) return true;
runTime += Time.fixedDeltaTime;
if(runTime >=gameTime )
{
runTime = 0;
return  true;
}
return false;
}
/// <summary>
/// 判断是否暂停
/// </summary>
/// <returns></returns>
private bool IsRun()
{
if(!isStopGame )
{
//不是暂停的时候,判断是否到了更新时间
if(LateTime ())
{
return true;
}
}
return false;
}
public override void FixedUpdateGame()
{
}

public override void UpdateGame()
{
}

public override void LateUpdateGame()
{
}
}


代码比较容易懂。我就不做过多的解释了,然后我觉得做成静态类更加方便,如果是继承的话,局限性就太大了,毕竟只是一个控制物体运行逻辑的类,然后改一下某个函数的返回值为bool就可以实现这个物体的执行逻辑了

原文:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: