Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity счет после клика

unity unityunity Ученик (139), на голосовании 5 месяцев назад
При нажатии кнопки Click добавляется счет 1,2,3 и тд а при нажатии кнопки Delete у меня сбрасывается счет на 0 и при следующем нажатии кнопки Click у меня счет считает не заново с 0 а продолжает дальше в чем проблема? Может потому что я использую TextMeshPro? Хотя я не знаю как сделать еще счетчик кроме текста.
Голосование за лучший ответ
I'm-Chudro Sop Ученик (167) 6 месяцев назад
Так ты функцию сброса сделал? Ну чтобы у тебя переменная сбрасивалась прям
I'm-Chudro SopУченик (167) 6 месяцев назад
using UnityEngine;

public class Counter : MonoBehaviour
{
private int count = 0;

void Update()
{
// Увеличиваем счетчик при нажатии кнопки
if (Input.GetKeyDown( KeyCode.Space ))
{
count++;
Debug.Log("Count: " + count);
}

// Сбрасываем счетчик при нажатии другой кнопки (например, R)
if (Input.GetKeyDown(KeyCode.R))
{
count = 0;
Debug.Log("Counter reset");
}
}
}
unity unityunity Ученик (139) I'm-Chudro Sop, using UnityEngine; using TMPro; public class DeleteButton : MonoBehaviour { public TextMeshProUGUI counterText; // Ссылка на текстовое поле // Метод, вызываемый при нажатии кнопки удаления public void OnDeleteButtonClick() { // Сброс счетчика на 0 ResetCounter(); } // Метод для сброса счетчика public void ResetCounter() { // Обновление текста счетчика на нуль counterText.text = "0"; } } а это код сбрасывания
unity unityunityУченик (139) 6 месяцев назад
вот мои скрипты using UnityEngine;
using TMPro;

public class ScoreCounter : MonoBehaviour
{
public TextMeshProUGUI counterText; // Ссылка на текстовое поле
private int score = 0; // Переменная для счета

// Метод для увеличения счета при нажатии кнопки click
public void IncrementScore()
{
score++; // Увеличиваем счетчик
UpdateCounterText(); // Обновляем текстовое поле с текущим счетом
}

// Метод для сброса счета
public void ResetScore()
{
score = 0; // Сбросить счет на 0
UpdateCounterText(); // Обновить текстовое поле
}

private void UpdateCounterText()
{
counterText.text = score.ToString(); // Обновить текстовое поле с текущим счетом
}
}
код счета
Андрей Панарин Искусственный Интеллект (242619) 6 месяцев назад
В классе ScoreCounter сделайте метод для обнуления значения поля score и текста.
А в класс DeleteButton добавьте поле типа ScoreCounter и при сбросе обращайтесь к этому полю, вызывая у него метод сброса. Так поле score будет сбрасываться.
unity unityunityУченик (139) 6 месяцев назад
всё равно после сброса счет не считает с 0
Андрей Панарин Искусственный Интеллект (242619) Показывайте код, что у вас поулчилось.
unity unityunityУченик (139) 6 месяцев назад
вот
Андрей Панарин Искусственный Интеллект (242619) Отлично. При сбросе в логе пишет про not assigned?
unity unityunityУченик (139) 6 месяцев назад
только 1 считает клики
Андрей Панарин Искусственный Интеллект (242619) Я пришел домой и сделал: https://www.youtube.com/watch?v=TUVPeA5_K20 Всё работает нормально.
MarkusB Профи (870) 6 месяцев назад
Проблема, с которой вы сталкиваетесь, скорее всего связана с тем, что вы не сбрасываете счетчик на 0 перед началом подсчета снова. Вам необходимо явно установить значение счетчика в 0 при нажатии кнопки Delete.

Вот пример кода на языке C#, который позволит вам реализовать это в Unity с использованием TextMeshPro:

using UnityEngine;
using TMPro;

public class ScoreManager : MonoBehaviour
{
public TextMeshProUGUI scoreText;
private int score = 0;

public void IncrementScore()
{
score++;
scoreText.text = score.ToString();
}

public void ResetScore()
{
score = 0;
scoreText.text = score.ToString();
}
}
unity unityunityУченик (139) 6 месяцев назад
так считать с самого начало он не будет
MarkusBПрофи (870) 6 месяцев назад
Код скинь, я посмотрю где ошибка.
unity unityunityУченик (139) 6 месяцев назад
using UnityEngine;
using TMPro;

public class ScoreManager : MonoBehaviour
{
public TextMeshProUGUI scoreText;
private int score = 0;

public void IncrementScore()
{
score++;
scoreText.text = score.ToString();
}

public void ResetScore()
{
score = 0;
scoreText.text = score.ToString();
}
}
MarkusBПрофи (870) 6 месяцев назад
Попробуй этот код

using UnityEngine;
using TMPro;

public class ScoreManager : MonoBehaviour
{
public static ScoreManager Instance { get; private set; }

public TextMeshProUGUI scoreText;
private int score = 0;

private void Awake()
{
if (Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject);
}
}

public void IncrementScore()
{
score++;
scoreText.text = score.ToString();
}

public void ResetScore()
{
score = 0;
scoreText.text = score.ToString();
}
}
unity unityunity Ученик (139) MarkusB, у меня вообще теперь кнопка клика и удаления пропала
MarkusBПрофи (870) 6 месяцев назад
Попробуй сейчас

public class ScoreManager : MonoBehaviour
{
public TextMeshProUGUI scoreText;
private int score = 0;
private static ScoreManager instance;

public static ScoreManager Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<ScoreManager>();
if (instance == null)
{
GameObject obj = new GameObject("ScoreManager");
instance = obj.AddComponent<ScoreManager>();
}
}
return instance;
}
}
MarkusBПрофи (870) 6 месяцев назад
private void Awake()

{

if (instance != null && instance != this)

{

Destroy(this.gameObject);

}

else

{

instance = this;

}

}



public void IncrementScore()

{

score++;

scoreText.text = score.ToString();

}



public void ResetScore()

{

score = 0;

scoreText.text = score.ToString();

}

}
Похожие вопросы