Ваш текущий код выглядит неплохо, но вам нужно убедиться, что вы вызываете метод `ShowAmmoText`, чтобы обновить текстовое поле с количеством патронов на экране. Кроме того, убедитесь, что вы получаете актуальное количество патронов из вашего оружия (количество оставшихся патронов) и передаете его в метод отображения.
Вот пример, как можно обновить ваш код:
1. Убедитесь, что у вас есть переменная, которая хранит текущее количество патронов (например, `currentAmmo`). Это должно быть частью вашего класса `Weapon`.
2. Обновите метод `Update`, чтобы вызывался `ShowAmmoText` с текущим количеством патронов.
Пример исправленного кода:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UI : MonoBehaviour
{
[SerializeField] private Text AmmoText;
private Weapon selectedWeaponA;
void Start()
{
// Получаем выбранное оружие из WeaponManager
selectedWeaponA = GameObject.Find("WeaponManager").GetComponent<WeaponManager>().selectedWeapon;
// Обновляем UI сразу при старте
UpdateAmmoText();
}
// Update is called once per frame
void Update()
{
// Проверяем, изменилось ли количество патронов, и обновляем UI при необходимости
if (selectedWeaponA != null)
{
UpdateAmmoText();
}
}
private void UpdateAmmoText()
{
if (selectedWeaponA != null)
{
// Предполагаем, что у вас есть свойство currentAmmo в классе Weapon, которое содержит текущее количество патронов
ShowAmmoText(selectedWeaponA.currentAmmo.ToString());
}
}
public void ShowAmmoText(string text)
{
if (AmmoText != null)
{
AmmoText.text = text;
}
}
}
```
Не забудьте убедиться в следующем:
- Убедитесь, что в вашем классе `Weapon` есть свойство `currentAmmo`, которое отображает текущее количество патронов.
- Убедитесь, что текстовый компонент UI (AmmoText) правильно назначен в инспекторе Unity.
- Рассмотрите вопрос о том, чтобы отделить логику обновления UI от самого UI. Это может сделать ваш код более чистым и удобным для сопровождения. Например, можно использовать события для обновления UI, когда количество патронов изменяется.