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

Помогите с Unity

Rock King Ученик (164), на голосовании 6 месяцев назад
В коде
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Mechanic : MonoBehaviour
{
[SerializeField] private int score = 0;
[SerializeField] private int musicGrade = 1;
[SerializeField] private int characterGrade = 1;
private int totalBonus;
public Text moneyText;
private void Start()
{
// score = PlayerPrefs.GetInt("score", 0);
//totalBonus = PlayerPrefs.GetInt("totalBonus",1);
}

public void OnClick()
{
totalBonus = characterGrade * musicGrade;
score+= totalBonus;
// PlayerPrefs.SetInt("score", score);
}
public void Update()
{
moneyText.text = "У вас очков " + score;
}
public void nubikSkin()
{
if (score > 9)
{
score -= 10;
characterGrade = 2;
}
}
}
"nubikSkin()" при использовании Unity On click не срабатывает,score не убавляется при нажатии, не смотря на значение больше 10,я новичок и не знаю как это решить. В случае Score всё работает
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (144149) 7 месяцев назад
Ваша функция "nubikSkin()" не срабатывает автоматически при нажатии, потому что, похоже, вы не связали её событие OnClick в Unity с этим методом. Вот что вам нужно сделать:

1. Перейдите в Unity и найдите объект кнопки, на которую вы хотите нажать, чтобы активировать "nubikSkin()".
2. В инспекторе найдите компонент Button и раскройте его секцию OnClick().
3. Нажмите на "+" внизу, чтобы добавить новое событие.
4. Перетащите объект, содержащий ваш скрипт "Mechanic", в поле объекта, которое появится в событии OnClick.
5. В выпадающем меню справа выберите "Mechanic" -> "nubikSkin()".

Таким образом, каждый раз при нажатии на кнопку будет вызываться функция "nubikSkin()", и ваша программа будет работать как задумано.
Rock KingУченик (164) 7 месяцев назад
Всё это делал, но спасибо за помощь
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (144149) Rock King, В таком случае, проверьте, не заблокирована ли кнопка или не находится ли она за каким-либо элементом интерфейса, из-за чего не может быть нажата. Также убедитесь, что ваш скрипт корректно присвоен объекту, который должен реагировать на нажатие. Если всё это в порядке, возможно, проблема кроется в логике других частей вашего скрипта, которые могут влиять на работу "nubikSkin()". Проверьте, не перезаписывается ли где-нибудь значение score прежде, чем происходит попытка его уменьшить, или работу других условий, которые могут мешать вызову этого метода. Великие открытия требуют терпения и тщательности, продолжайте экспериментировать!
Похожие вопросы