Артём Таптыков
Просветленный
(24799)
6 месяцев назад
Йо, братан, давай разберёмся, чё за дела тут у тебя с этим кодом. Значит, смотри, фишка такая: ты в методе `bed()` врубил отладку, и чё-то у тебя там значения в `woodsInChestCol` и `woolsInChestCol` в нули съезжают, да?
Короче, есть пара версий, в чём может быть косяк:
1. **Перепутка имён методов**: Ты в методе `bed()` вызываешь `UpdateGUI()`, но до этого всё мутил с `UpdateUI()`. Если бы ты везде юзал `UpdateUI()`, может, проблема бы ушла. Проверь, может, ты просто накосячил с названием метода.
2. **Тайные звоночки**: Есть шанс, что где-то ещё в коде у тебя кто-то лезет и меняет эти переменные на нули. Проверь, нет ли где-то ещё в проекте таких темных уголков.
3. **Запрятанный ресет**: Может, у тебя какой-то другой скрипт или объект роняет значение этих переменных на ноль. Это легко могло бы быть, если у тебя что-то вроде ресета или сброса где-то закопано. Попробуй прогнать проект и понаблюдать за этими переменными через дебаггер или поставь побольше `Debug.Log`, чтобы отследить, где конкретно они теряют своё значение.
4. **Start метод с приколом**: Можешь ещё проверить, что у тебя происходит в методе `Start()` и не теряются ли значения там, хотя они вроде сохраняются нормально.
Попробуй проверить вот эти вещи, братан. Если не прокатит, вернёмся и будем дальше разбираться, куда там чё утекает. Спроси ещё, если чё не понятно, на районе всегда поможем!
Sone1Ученик (98)
6 месяцев назад
кароче я проверил и добавил к этим "нолям" еще ресурсов и угадай что? было 33 потом съехало на 00 я закидываю еще по два к каждому и о чудо 55.
1 не путал вроде нигде. посмотрел все скрипты
3 больше нигде не используется
2 и 4 прям наврядли
Sone1Ученик (98)
6 месяцев назад
это у меня было инт я решил с флоат попробовать вдруг поможет)
сейчас попробовал инт не помогло
нифига(((
Sone1Ученик (98)
6 месяцев назад
ой кажется ты мне помг в днм из прошлых вопросов! я слишком невнимательный.
Спасибо большое!
using TMPro;
using UnityEngine;
public class ChestManager : MonoBehaviour
{
public TMP_Text woodsInChest, woolsInChest;
private float woodsInChestCol, woolsInChestCol;
public TMP_Text[] slots;
public GameObject[] drops;
public GameObject[] woods;
private movePlayer movePlayer;
void Start()
{
movePlayer = FindObjectOfType<movePlayer>();
}
public void UpPressed()
{
Debug.Log("Updating resources");
woodsInChestCol += movePlayer.treesCol;
woolsInChestCol += movePlayer.woolCol;
Debug.Log("a"+woodsInChestCol+ woolsInChestCol);
UpdateUI();
movePlayer.treesCol = 0;
movePlayer.woolCol = 0;
Debug.Log("c" + woodsInChestCol + woolsInChestCol);
}
private void UpdateUI()
{
woodsInChest.text = woodsInChestCol.ToString();
woolsInChest.text = woolsInChestCol.ToString();
Debug.Log("b" + woodsInChestCol + woolsInChestCol);
foreach (var slot in slots)
{
slot.text = "0";
}
foreach (var drop in drops)
{
drop.SetActive(false);
}
foreach (var wood in woods)
{
wood.SetActive(false);
}
}
public void bed()
{
Debug.Log("e" + woodsInChestCol + woolsInChestCol);
if (woodsInChestCol >= 3 && woolsInChestCol >= 3)
{
woodsInChestCol -= 3;
woolsInChestCol -= 3;
UpdateGUI();
Debug.Log("Craft");
}
else
{
Debug.Log("Not enough resources to craft.");
}
}
private void UpdateGUI()
{
Debug.Log("f" + woodsInChestCol + woolsInChestCol);
woodsInChest.text = woodsInChestCol.ToString();
woolsInChest.text = woolsInChestCol.ToString();
}
}
в Debug.Log("e" + woodsInChestCol + woolsInChestCol);
почему-то эти две переменные теряют свое значение и становятся нулями!
пример из консоли:
Сундук: открыт
Updating resources
a23
b23
c23
Сундук: закрыт
a33
b33
c33
e00
Not enough resources to craft.
Умоляю помогите уже который час не вдупляю в чем проблема...