Compare commits

...

3 Commits

Author SHA1 Message Date
ryzij 48c5daa91f Update README.md 2026-05-16 18:12:39 +03:00
ryzij 761193089f Исправил размеры game over меню 2026-05-16 18:11:28 +03:00
ryzij a9b985cfd4 Добавил возможность проиграть 2026-05-16 17:31:11 +03:00
6 changed files with 120 additions and 30 deletions
+66 -24
View File
@@ -2289,7 +2289,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 275.93143, y: -111.049545} m_AnchoredPosition: {x: 265.00195, y: -120.02109}
m_SizeDelta: {x: 130, y: 130} m_SizeDelta: {x: 130, y: 130}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &289746861 --- !u!114 &289746861
@@ -2336,7 +2336,7 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
- m_Target: {fileID: 473347667} - m_Target: {fileID: 359661414}
m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp
m_MethodName: RestartGame m_MethodName: RestartGame
m_Mode: 1 m_Mode: 1
@@ -2733,6 +2733,57 @@ Transform:
m_CorrespondingSourceObject: {fileID: 5368672011475721328, guid: 8dd20c91f0d7a7b419f6bedcd1870cba, type: 3} m_CorrespondingSourceObject: {fileID: 5368672011475721328, guid: 8dd20c91f0d7a7b419f6bedcd1870cba, type: 3}
m_PrefabInstance: {fileID: 352804702} m_PrefabInstance: {fileID: 352804702}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &359661412
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 359661413}
- component: {fileID: 359661414}
m_Layer: 0
m_Name: GameOverMenu
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &359661413
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359661412}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 473347664}
m_Father: {fileID: 1678567591}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &359661414
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359661412}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79c22679605c9274ab2a50d6c80e2b19, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::GameOverMenu
_tower: {fileID: 1739395621}
_menuPanel: {fileID: 473347664}
--- !u!1001 &360688809 --- !u!1001 &360688809
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -3258,7 +3309,6 @@ GameObject:
- component: {fileID: 473347664} - component: {fileID: 473347664}
- component: {fileID: 473347666} - component: {fileID: 473347666}
- component: {fileID: 473347665} - component: {fileID: 473347665}
- component: {fileID: 473347667}
m_Layer: 0 m_Layer: 0
m_Name: GameOverPanel m_Name: GameOverPanel
m_TagString: Untagged m_TagString: Untagged
@@ -3273,19 +3323,19 @@ RectTransform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 473347663} m_GameObject: {fileID: 473347663}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1168350718} - {fileID: 1168350718}
- {fileID: 2107886998} - {fileID: 2107886998}
m_Father: {fileID: 1678567591} m_Father: {fileID: 359661413}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 1370.4474, y: 1052.4272}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &473347665 --- !u!114 &473347665
MonoBehaviour: MonoBehaviour:
@@ -3325,18 +3375,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 473347663} m_GameObject: {fileID: 473347663}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!114 &473347667
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 473347663}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79c22679605c9274ab2a50d6c80e2b19, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::GameOverMenu
--- !u!1001 &477181437 --- !u!1001 &477181437
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -4188,6 +4226,7 @@ MonoBehaviour:
_sandPathBuildService: {fileID: 305503} _sandPathBuildService: {fileID: 305503}
_turretShop: {fileID: 1311268619} _turretShop: {fileID: 1311268619}
_spawnDeathControl: {fileID: 694046010} _spawnDeathControl: {fileID: 694046010}
_tower: {fileID: 1739395621}
--- !u!1 &645921916 --- !u!1 &645921916
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -6579,7 +6618,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 115.93143, y: -111.049545} m_AnchoredPosition: {x: 105.00195, y: -120.02109}
m_SizeDelta: {x: 130, y: 130} m_SizeDelta: {x: 130, y: 130}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1000965056 --- !u!114 &1000965056
@@ -6626,7 +6665,7 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
- m_Target: {fileID: 473347667} - m_Target: {fileID: 359661414}
m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp m_TargetAssemblyTypeName: GameOverMenu, Assembly-CSharp
m_MethodName: MainMenu m_MethodName: MainMenu
m_Mode: 1 m_Mode: 1
@@ -8116,7 +8155,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -138} m_AnchoredPosition: {x: 2.5155, y: -315}
m_SizeDelta: {x: 364.973, y: 93.34039} m_SizeDelta: {x: 364.973, y: 93.34039}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1168350719 --- !u!114 &1168350719
@@ -11302,7 +11341,7 @@ RectTransform:
m_Children: m_Children:
- {fileID: 1789632538} - {fileID: 1789632538}
- {fileID: 844851690} - {fileID: 844851690}
- {fileID: 473347664} - {fileID: 359661413}
m_Father: {fileID: 424609984} m_Father: {fileID: 424609984}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@@ -11684,6 +11723,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 49451834470586d42a0a0039b348f818, type: 3} m_Script: {fileID: 11500000, guid: 49451834470586d42a0a0039b348f818, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Tower m_EditorClassIdentifier: Assembly-CSharp::Tower
_onGameOver:
m_PersistentCalls:
m_Calls: []
--- !u!4 &1739395622 --- !u!4 &1739395622
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -13354,8 +13396,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0.000061035156, y: 0}
m_SizeDelta: {x: -427.8111, y: -363.4996} m_SizeDelta: {x: -1000.4435, y: -812.3851}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2107886999 --- !u!114 &2107886999
MonoBehaviour: MonoBehaviour:
+8
View File
@@ -6,6 +6,7 @@ public class Debugger : MonoBehaviour
[SerializeField] private SandPathBuildService _sandPathBuildService; [SerializeField] private SandPathBuildService _sandPathBuildService;
[SerializeField] private TurretsShop _turretShop; [SerializeField] private TurretsShop _turretShop;
[SerializeField] private SpawnDeathEnemyController _spawnDeathControl; [SerializeField] private SpawnDeathEnemyController _spawnDeathControl;
[SerializeField] private Tower _tower;
private void OnEnable() private void OnEnable()
{ {
@@ -14,6 +15,7 @@ public class Debugger : MonoBehaviour
_turretShop.OnTurretSelected += OnTurretSelected; _turretShop.OnTurretSelected += OnTurretSelected;
_turretShop.OnTurretDeselected += OnTurretDeselected; _turretShop.OnTurretDeselected += OnTurretDeselected;
_spawnDeathControl.OnLastEnemyDestroyed += OnLastEnemyDestroyed; _spawnDeathControl.OnLastEnemyDestroyed += OnLastEnemyDestroyed;
_tower.OnGameOver += OnGameOver;
} }
private void OnDisable() private void OnDisable()
@@ -23,6 +25,7 @@ public class Debugger : MonoBehaviour
_turretShop.OnTurretSelected -= OnTurretSelected; _turretShop.OnTurretSelected -= OnTurretSelected;
_turretShop.OnTurretDeselected -= OnTurretDeselected; _turretShop.OnTurretDeselected -= OnTurretDeselected;
_spawnDeathControl.OnLastEnemyDestroyed -= OnLastEnemyDestroyed; _spawnDeathControl.OnLastEnemyDestroyed -= OnLastEnemyDestroyed;
_tower.OnGameOver -= OnGameOver;
} }
private static void OnGameStateChanged(GameManager.GameState newState) private static void OnGameStateChanged(GameManager.GameState newState)
@@ -49,4 +52,9 @@ public class Debugger : MonoBehaviour
{ {
print("Last enemy destroyed"); print("Last enemy destroyed");
} }
private void OnGameOver()
{
print("Game over");
}
} }
+22 -1
View File
@@ -1,14 +1,29 @@
using System; using System;
using UnityEngine; using UnityEngine;
using UnityEngine.Events;
[RequireComponent(typeof(TowerHealth))] [RequireComponent(typeof(TowerHealth))]
public class Tower : MonoBehaviour public class Tower : MonoBehaviour
{ {
[SerializeField] private UnityEvent _onGameOver;
public event UnityAction OnGameOver
{
add => _onGameOver.AddListener(value);
remove => _onGameOver.RemoveListener(value);
}
private TowerHealth _towerHealth; private TowerHealth _towerHealth;
private void Start() private void OnEnable()
{ {
_towerHealth = GetComponent<TowerHealth>(); _towerHealth = GetComponent<TowerHealth>();
_towerHealth.OnHealthChanged += OnHealthChanged;
}
private void OnDisable()
{
_towerHealth.OnHealthChanged -= OnHealthChanged;
} }
private void OnTriggerEnter(Collider other) private void OnTriggerEnter(Collider other)
@@ -16,4 +31,10 @@ public class Tower : MonoBehaviour
if (other.TryGetComponent(out Enemy enemy)) if (other.TryGetComponent(out Enemy enemy))
_towerHealth.TakeDamage(enemy.Damage); _towerHealth.TakeDamage(enemy.Damage);
} }
private void OnHealthChanged(TowerHealth.OnHealthChangedEventArgs args)
{
if (args.CurrentHealth <= 0)
_onGameOver?.Invoke();
}
} }
-4
View File
@@ -47,10 +47,6 @@ public class TowerHealth : MonoBehaviour
public void TakeDamage(float damage) public void TakeDamage(float damage)
{ {
CurrentHealth -= damage; CurrentHealth -= damage;
// TODO: доделать проигрыш
if (CurrentHealth <= 0)
Debug.Log("Game over");
} }
public class OnHealthChangedEventArgs : EventArgs public class OnHealthChangedEventArgs : EventArgs
+21
View File
@@ -3,13 +3,34 @@ using UnityEngine.SceneManagement;
public class GameOverMenu : MonoBehaviour public class GameOverMenu : MonoBehaviour
{ {
[SerializeField] private Tower _tower;
[SerializeField] private Transform _menuPanel;
private void OnEnable()
{
_tower.OnGameOver += OnGameOver;
}
private void OnDisable()
{
_tower.OnGameOver -= OnGameOver;
}
public void RestartGame() public void RestartGame()
{ {
Time.timeScale = 1f;
SceneManager.LoadScene("Island"); SceneManager.LoadScene("Island");
} }
public void MainMenu() public void MainMenu()
{ {
Time.timeScale = 1f;
SceneManager.LoadScene("MainMenu"); SceneManager.LoadScene("MainMenu");
} }
private void OnGameOver()
{
Time.timeScale = 0f;
_menuPanel.gameObject.SetActive(true);
}
} }
+2
View File
@@ -1 +1,3 @@
# Cube Tower Defense # Cube Tower Defense
Играть - https://towerdefense.aloegames.com/