Skip to content

Commit cce7aaa

Browse files
Add FPS Stats and Remove lights
1 parent c0a2723 commit cce7aaa

File tree

15 files changed

+376
-141
lines changed

15 files changed

+376
-141
lines changed

Assets/Scenes/Main.unity

Lines changed: 236 additions & 105 deletions
Large diffs are not rendered by default.

Assets/Scripts/Actors/OpenKnife.Actors.asmdef

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
"name": "OpenKnife.Actors",
33
"references": [
44
"OpenKnife.Utils",
5-
"OpenKnife",
6-
"OpenKnife.UI"
5+
"OpenKnife"
76
],
87
"includePlatforms": [],
98
"excludePlatforms": [],

Assets/Scripts/Actors/Scorer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ public class Scorer : MonoBehaviour
1010
public int Score => score;
1111
public int Fruits => fruits;
1212

13+
private void Start()
14+
{
15+
score = 0;
16+
fruits = 0;
17+
}
18+
1319
public void AddScore(int value)
1420
{
1521
if (value < 0) return;

Assets/Scripts/Actors/Shooter.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using UnityEngine;
22
using OpenKnife;
3-
using OpenKnife.UI;
43
using UnityEngine.Events;
54

65
namespace OpenKnife.Actors
@@ -16,6 +15,7 @@ public class Shooter : MonoBehaviour
1615
{
1716
private int shoots = 0;
1817
public ShootEvent m_ShootEvent = new ShootEvent();
18+
public ShootEvent m_NewShoots = new ShootEvent();
1919

2020
public ConstantForce2D mover;
2121

@@ -27,7 +27,6 @@ public class Shooter : MonoBehaviour
2727
public void SetNewShoots(int shoots)
2828
{
2929
this.shoots = shoots;
30-
UIManager.instance.shootsPanel.SetNewShoots(shoots);
3130
}
3231

3332
private void Update()

Assets/Scripts/Levels/LevelManager.cs

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
using UnityEngine.Events;
55
using OpenKnife.Actors;
66
using OpenKnife.States;
7-
using OpenKnife.UI;
87

98
namespace OpenKnife.Levels
109
{
10+
1111
public class LevelManager : MonoBehaviour, GameStates
1212
{
1313
#region Public variables
@@ -25,7 +25,6 @@ public class LevelManager : MonoBehaviour, GameStates
2525
public GameObject wood;
2626
public Transform spawnShooter;
2727

28-
2928
[Header("Events")]
3029
public UnityEvent onKnifeHitOnWood;
3130
public UnityEvent onKnifeHitOnKnife;
@@ -35,6 +34,11 @@ public class LevelManager : MonoBehaviour, GameStates
3534
public UnityEvent onStageFinish;
3635
public UnityEvent onShoot;
3736

37+
public int ActualStage => actualStage;
38+
public int ActualScore => scorer.Score;
39+
public int Fruits => scorer.Fruits;
40+
public int Shoots => shooter.Shoots;
41+
3842
#endregion
3943

4044
#region Private variables
@@ -134,26 +138,9 @@ private void InitBuiltInEvents()
134138
Destroy(go, 1f);
135139

136140
scorer.AddFruits(1);
137-
UIManager.instance.UpdateFruitsText(scorer.Fruits);
138-
});
139-
onScore.AddListener(delegate
140-
{
141-
UIManager.instance.UpdateScoreText(scorer.Score);
142141
});
143142

144-
onStageInit.AddListener(delegate
145-
{
146-
UIManager.instance.UpdateStageTitleText(actualStage);
147-
});
148-
onStageFinish.AddListener(delegate
149-
{
150-
UIManager.instance.stageTitle.gameObject.SetActive(false);
151-
});
152-
153-
onShoot.AddListener(delegate
154-
{
155-
UIManager.instance.shootsPanel.Shoot();
156-
});
143+
157144
}
158145

159146
// Prepare for next shooter
@@ -201,7 +188,6 @@ private void RequestNewShoot()
201188
private void Next()
202189
{
203190
actualStage++;
204-
UIManager.instance.UpdateStageText(actualStage);
205191
if (stages.Length <= actualStage)
206192
{
207193
GameManager.instance.GameOver();

Assets/Scripts/Levels/OpenKnife.Levels.asmdef

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
{
22
"name": "OpenKnife.Levels",
33
"references": [
4-
"OpenKnife.Actors",
5-
"OpenKnife.States",
64
"OpenKnife",
7-
"OpenKnife.UI"
5+
"OpenKnife.Actors",
6+
"OpenKnife.States"
87
],
98
"includePlatforms": [],
109
"excludePlatforms": [],

Assets/Scripts/UI/OpenKnife.UI.asmdef

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"references": [
44
"OpenKnife.States",
55
"OpenKnife",
6-
"UnityEngine.UI"
6+
"UnityEngine.UI",
7+
"OpenKnife.Levels"
78
],
89
"includePlatforms": [],
910
"excludePlatforms": [],

Assets/Scripts/UI/UIManager.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using OpenKnife.States;
44
using UnityEngine;
55
using UnityEngine.UI;
6+
using OpenKnife.Levels;
67

78
namespace OpenKnife.UI
89
{
@@ -15,6 +16,8 @@ public class UIManager : MonoBehaviour, GameStates
1516
public GameObject inGamePanel;
1617
public GameObject gameOverPanel;
1718

19+
private LevelManager levelManager;
20+
1821
[Header("References")]
1922
public Text stageText;
2023
public Text fruitsText;
@@ -36,10 +39,37 @@ private void Awake()
3639

3740
private void Start()
3841
{
42+
levelManager = GameManager.instance.GetComponent<LevelManager>();
3943
GameManager.instance.gameStates.Add(this);
4044
UpdateFruitsText(0);
4145
UpdateScoreText(0);
4246
UpdateStageText(0);
47+
48+
levelManager.onShoot.AddListener(delegate
49+
{
50+
shootsPanel.Shoot();
51+
});
52+
levelManager.onStageFinish.AddListener(delegate
53+
{
54+
stageTitle.gameObject.SetActive(false);
55+
});
56+
levelManager.onStageInit.AddListener(delegate
57+
{
58+
UpdateStageTitleText(levelManager.ActualStage);
59+
shootsPanel.SetNewShoots(levelManager.Shoots);
60+
});
61+
levelManager.onScore.AddListener(delegate
62+
{
63+
UpdateScoreText(levelManager.ActualScore);
64+
});
65+
levelManager.onStageInit.AddListener(delegate
66+
{
67+
UpdateStageText(levelManager.ActualStage);
68+
});
69+
levelManager.onFruitSlice.AddListener(delegate
70+
{
71+
UpdateFruitsText(levelManager.Fruits);
72+
});
4373
}
4474

4575
private void OnDisable()

Assets/Scripts/Utils/FPSStat.cs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using UnityEngine;
2+
using UnityEngine.UI;
3+
4+
namespace OpenKnife.Utils
5+
{
6+
public class FPSStat : MonoBehaviour
7+
{
8+
9+
[Range(0.1f,1f)]
10+
public float UpdateInterval = 0.5f;
11+
12+
public Text _infoFPS;
13+
public Text _infoMS;
14+
15+
private float m_AccumulatedTime = 0f;
16+
private int m_AccumulatedFrames = 0;
17+
private float m_LastUpdateTime;
18+
private float m_FrameTime = 0f;
19+
private float m_FrameRate = 0f;
20+
21+
public static float MinTime = 0.000000001f;
22+
23+
private void Update()
24+
{
25+
float deltaTime = Time.unscaledDeltaTime;
26+
27+
m_AccumulatedTime += deltaTime;
28+
m_AccumulatedFrames++;
29+
30+
float nowTime = Time.realtimeSinceStartup;
31+
if (nowTime - m_LastUpdateTime < UpdateInterval) {
32+
return;
33+
}
34+
35+
m_FrameTime = m_AccumulatedTime / m_AccumulatedFrames;
36+
m_FrameRate = 1.0f / m_FrameTime;
37+
38+
UpdateInfo();
39+
40+
ResetProbingData();
41+
m_LastUpdateTime = nowTime;
42+
}
43+
44+
45+
private void UpdateInfo()
46+
{
47+
_infoFPS.text = string.Format(
48+
"{0}"+" FPS ",
49+
m_FrameRate.ToString("F0"));
50+
51+
_infoMS.text = string.Format(
52+
"{0}"+" MS ",
53+
(m_FrameTime*1000f).ToString("F1"));
54+
}
55+
56+
57+
private void ResetProbingData() {
58+
m_AccumulatedTime = 0.0f;
59+
m_AccumulatedFrames = 0;
60+
}
61+
62+
private void Reset()
63+
{
64+
m_LastUpdateTime = Time.realtimeSinceStartup;
65+
}
66+
67+
68+
}
69+
}

Assets/Scripts/Utils/FPSStat.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)