using UnityEngine; using NavKeypad; using TMPro; public class PasswordManager : MonoBehaviour { [Header("Настройки пароля")] public int passwordLength = 4; // Длина пароля (4 цифры) public string correctPassword; // Сгенерированный пароль [Header("Записки")] public GameObject notePrefab; // Prefab записки с TextMesh public Transform[] noteSpawnPoints; // Точки спавна [SerializeField] private Vector3[] noteRotations; // Массив вращений для каждой записки [Header("Ссылка на keypad")] public Keypad keypadScript; // Ссылка на Keypad.cs private void Start() { // Проверяем соответствие массивов if (noteSpawnPoints.Length != passwordLength || noteRotations.Length != passwordLength) { Debug.LogError("Количество точек спавна и вращений должно быть равно длине пароля!"); return; } GeneratePassword(); SpawnNotes(); SetPasswordToKeypad(); } private void GeneratePassword() { correctPassword = ""; for (int i = 0; i < passwordLength; i++) { int randomDigit = Random.Range(0, 10); correctPassword += randomDigit.ToString(); } Debug.Log("Сгенерированный пароль: " + correctPassword); } private void SpawnNotes() { for (int i = 0; i < passwordLength; i++) { // Спавним записку с индивидуальным вращением GameObject note = Instantiate(notePrefab, noteSpawnPoints[i].position, Quaternion.Euler(noteRotations[i])); // Находим TextMeshPro TextMeshPro textComponent = note.GetComponentInChildren(); if (textComponent != null) { textComponent.text = $"{i + 1}: {correctPassword[i]}"; textComponent.enableWordWrapping = false; textComponent.alignment = TextAlignmentOptions.Center; } else { Debug.LogError($"На prefab'е записки ({note.name}) нет компонента TextMeshPro!"); } // Настраиваем NotePickup NotePickup pickup = note.GetComponent(); if (pickup == null) { pickup = note.AddComponent(); } pickup.noteIndex = i + 1; pickup.digit = correctPassword[i]; Debug.Log($"Записка {i + 1} заспавнена в {noteSpawnPoints[i].position} с вращением {noteRotations[i]}"); } } private void SetPasswordToKeypad() { if (keypadScript != null) { keypadScript.keypadCombo = int.Parse(correctPassword); Debug.Log($"Пароль установлен в Keypad: {correctPassword}"); } else { Debug.LogError("Ссылка на Keypad не присвоена!"); } } }