diff --git a/Assets/TEngine/Runtime/Core/GameTime.cs b/Assets/TEngine/Runtime/Core/GameTime.cs
index 0aee6ff7..f7190a10 100644
--- a/Assets/TEngine/Runtime/Core/GameTime.cs
+++ b/Assets/TEngine/Runtime/Core/GameTime.cs
@@ -7,6 +7,14 @@ namespace TEngine
///
public static class GameTime
{
+ ///
+ /// 开始记录
+ ///
+ public static void Start()
+ {
+ _lastFrameTimeStamp = TimeStamp;
+ }
+
///
/// 这一帧的记录
///
@@ -17,14 +25,34 @@ namespace TEngine
quickRealTime = Time.realtimeSinceStartup;
frameCount = Time.frameCount;
unscaledTime = Time.unscaledTime;
+
+ long now = TimeStamp;
+
+ if (ServerTimeStamp > 0)
+ {
+ ServerTimeStamp += now - _lastFrameTimeStamp;
+ }
+ else
+ {
+ ServerTimeStamp = now;
+ }
+ _lastFrameTimeStamp = now;
}
public static float time;
public static float deltaTime;
public static int frameCount;
public static float unscaledTime;
+ public static long ServerTimeStamp;
+ private static System.DateTime _epochDateTime = System.TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1), System.TimeZoneInfo.Local);
+ public static float quickRealTime;
+ public static long TimeStamp => System.DateTimeOffset.Now.ToUnixTimeMilliseconds();
+ private static long _lastFrameTimeStamp;
- public static float realtimeSinceStartup
+ ///
+ /// 从游戏启动到现在的真实时长(秒)
+ ///
+ public static float RealtimeSinceStartup
{
get
{
@@ -32,6 +60,14 @@ namespace TEngine
}
}
- public static float quickRealTime;
+ ///
+ /// 服务器同步时间
+ ///
+ ///
+ public static void ServerTimeSync(long serverTime)
+ {
+ ServerTimeStamp = serverTime;
+ }
+
}
}
\ No newline at end of file
diff --git a/Assets/TEngine/Runtime/Core/TEngine.cs b/Assets/TEngine/Runtime/Core/TEngine.cs
index acd4893e..cbf33cbd 100644
--- a/Assets/TEngine/Runtime/Core/TEngine.cs
+++ b/Assets/TEngine/Runtime/Core/TEngine.cs
@@ -74,6 +74,7 @@ namespace TEngine
#region 生命周期
public void Start()
{
+ GameTime.Start();
GameTime.StartFrame();
var listLogic = m_LogicMgrList;
var logicCnt = listLogic.Count;
diff --git a/TEngineHotUpdate/src/TEngineCore/Core/GameTime.cs b/TEngineHotUpdate/src/TEngineCore/Core/GameTime.cs
index a6c158d0..7911ee21 100644
--- a/TEngineHotUpdate/src/TEngineCore/Core/GameTime.cs
+++ b/TEngineHotUpdate/src/TEngineCore/Core/GameTime.cs
@@ -7,6 +7,14 @@ namespace TEngineCore
///
public static class GameTime
{
+ ///
+ /// 开始记录
+ ///
+ public static void Start()
+ {
+ _lastFrameTimeStamp = TimeStamp;
+ }
+
///
/// 这一帧的记录
///
@@ -17,14 +25,34 @@ namespace TEngineCore
quickRealTime = Time.realtimeSinceStartup;
frameCount = Time.frameCount;
unscaledTime = Time.unscaledTime;
+
+ long now = TimeStamp;
+
+ if (ServerTimeStamp > 0)
+ {
+ ServerTimeStamp += now - _lastFrameTimeStamp;
+ }
+ else
+ {
+ ServerTimeStamp = now;
+ }
+ _lastFrameTimeStamp = now;
}
public static float time;
public static float deltaTime;
public static int frameCount;
public static float unscaledTime;
+ public static long ServerTimeStamp;
+ private static System.DateTime _epochDateTime = System.TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1), System.TimeZoneInfo.Local);
+ public static float quickRealTime;
+ public static long TimeStamp => System.DateTimeOffset.Now.ToUnixTimeMilliseconds();
+ private static long _lastFrameTimeStamp;
- public static float realtimeSinceStartup
+ ///
+ /// 从游戏启动到现在的真实时长(秒)
+ ///
+ public static float RealtimeSinceStartup
{
get
{
@@ -32,6 +60,14 @@ namespace TEngineCore
}
}
- public static float quickRealTime;
+ ///
+ /// 服务器同步时间
+ ///
+ ///
+ public static void ServerTimeSync(long serverTime)
+ {
+ ServerTimeStamp = serverTime;
+ }
+
}
}
\ No newline at end of file
diff --git a/TEngineHotUpdate/src/TEngineCore/Core/TEngine.cs b/TEngineHotUpdate/src/TEngineCore/Core/TEngine.cs
index be8545fe..95d0316b 100644
--- a/TEngineHotUpdate/src/TEngineCore/Core/TEngine.cs
+++ b/TEngineHotUpdate/src/TEngineCore/Core/TEngine.cs
@@ -74,6 +74,7 @@ namespace TEngineCore
#region 生命周期
public void Start()
{
+ GameTime.Start();
GameTime.StartFrame();
var listLogic = m_LogicMgrList;
var logicCnt = listLogic.Count;