Пишите код лесенкой, чтобы было легче отследить, где какая скобка лишняя, а где недостает.
Вот исправленная структура кода:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
//На этом уровне пишем директивы using и объявляем классы
public class AchMenu : MonoBehaviour
{
//На этом уровне объявляем поля, начинаем и заканчиваем методы
int money;
public int total_money;
[SerializeField] Button firstAch;
[SerializeField] bool isFirst;
void Start()
{
//На этом уровне и правее пишем тело метода и его вложенные блоки
money = PlayerPrefs.GetInt("money");
total_money = PlayerPrefs.GetInt("total_money");
isFirst = PlayerPrefs.GetInt("isFirst") == 1 ? true : false;
if (total_money >= 10 && !isFirst)
{
firstAch.interactable = true;
}
else
{
firstAch.interactable = false;
StartCoroutine(IdleFarm());
}
// Здесь видно, что метод Start() не был закрыт выше, а ниже уже начинается метод GetFirst().
// Так нельзя. Закройте скобку метода Start(), прежде чем начинать новый метод.
// Ниже я добавил скобку, чтобы закрыть метод Start():
}
void GetFirst()
{
int money = PlayerPrefs.GetInt("money");
money += 10;
PlayerPrefs.SetInt("money", money);
isFirst = true;
PlayerPrefs.SetInt("IsFirst+", isFirst ? 1 : 0);
}
IEnumerator IdleFarm()
{
yield return new WaitForSeconds(1);
money++;
Debug.Log(money);
PlayerPrefs.SetInt("money", money);
StartCoroutine(IdleFarm());
}
void ToMenu()
{
SceneManager.LoadScene(0);
}
void Update()
{
}
}
// Всё, выше мы класс закрыли, после этого никакие закрывающие скобки больше не нужны.
// } - эту скобку я закомментировал, чтобы компилятор ее не воспринимал и не ругался на нее
За корректность остальных нюансов кода не ручаюсь, могут быть и другие ошибки.
Их стоит обсудить отдельно.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class AchMenu : MonoBehaviour
{
int money;
public int total_money;
[SerializeField] Button firstAch;
[SerializeField] bool isFirst;
void Start()
14 {
money = PlayerPrefs.GetInt("money");
total_money = PlayerPrefs.GetInt("total_money");
isFirst = PlayerPrefs.GetInt("isFirst") == 1 ? true : false;
if (total_money >= 10 && !isFirst)
{
firstAch.interactable = true;
}
else
{
firstAch.interactable = false;
StartCoroutine(IdleFarm());
}
30 void GetFirst()
{
int money = PlayerPrefs.GetInt("money");
money += 10;
PlayerPrefs.SetInt("money", money);
isFirst = true;
PlayerPrefs.SetInt("IsFirst+", isFirst ? 1 : 0);
}
IEnumerator IdleFarm()
{
yield return new WaitForSeconds(1);
money++;
Debug.Log(money);
PlayerPrefs.SetInt("money", money);
StartCoroutine(IdleFarm());
}
void ToMenu()
{
SceneManager.LoadScene(0);
}
52 void Update()
{
}
}
}
ОШИБКА CS8321 - СТРОКА 30,14
ОШИБКА CS8321 - СТРОКА 48,14
ОШИБКА CS8321 - СТРОКА 52,14