Добавил таймер для автоматического переключения волн

This commit is contained in:
2026-06-06 13:51:03 +03:00
parent b1e363c79f
commit 9662c9b083
3 changed files with 109 additions and 0 deletions
+47
View File
@@ -3941,6 +3941,7 @@ Transform:
- {fileID: 1282261902}
- {fileID: 709556714}
- {fileID: 884308128}
- {fileID: 2072548927}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &486141168
@@ -15645,6 +15646,52 @@ Transform:
m_CorrespondingSourceObject: {fileID: 5368672011475721328, guid: 8dd20c91f0d7a7b419f6bedcd1870cba, type: 3}
m_PrefabInstance: {fileID: 2022833990}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2072548926
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2072548927}
- component: {fileID: 2072548928}
m_Layer: 0
m_Name: TurretBuildTimer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2072548927
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2072548926}
serializedVersion: 2
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: []
m_Father: {fileID: 481586150}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2072548928
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2072548926}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 330d868d3d6a72c489dce65e1ca03edc, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::TurretsBuildTimer
_gameManager: {fileID: 1875710079}
_buildTime: 10
--- !u!1001 &2096698926
PrefabInstance:
m_ObjectHideFlags: 0
+60
View File
@@ -0,0 +1,60 @@
using UnityEngine;
using System.Collections;
using UnityEngine.Events;
public class TurretsBuildTimer : MonoBehaviour
{
[SerializeField] private GameManager _gameManager;
[SerializeField] private float _buildTime = 10f;
[SerializeField] private UnityEvent<OnTickEventArgs> _onTick;
public event UnityAction<OnTickEventArgs> OnTick
{
add => _onTick.AddListener(value);
remove => _onTick.RemoveListener(value);
}
private static readonly WaitForSeconds _wait = new(1f);
private void OnEnable()
{
_gameManager.OnStateChanged += OnStateChanged;
}
private void OnDisable()
{
_gameManager.OnStateChanged -= OnStateChanged;
}
private void OnStateChanged(GameManager.GameState newState)
{
if (newState == GameManager.GameState.BuildingPath)
return;
StopCoroutine(nameof(Timer));
if (newState == GameManager.GameState.BuildingTurrets)
StartCoroutine(nameof(Timer));
}
private IEnumerator Timer()
{
for (float i = 0; i < _buildTime; i++)
{
_onTick?.Invoke(new OnTickEventArgs
{
ElapsedSeconds = i,
TotalSeconds = _buildTime
});
yield return _wait;
}
_gameManager.NextLevel();
}
public class OnTickEventArgs
{
public float SecondsLeft => TotalSeconds - ElapsedSeconds;
public float ElapsedSeconds { get; set; }
public float TotalSeconds { get; set; }
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 330d868d3d6a72c489dce65e1ca03edc