Не можете найти, где добавить }, чтобы исправить } ожидаемую ошибку?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class TopicSpawn : MonoBehaviour
{

    public TextMeshProUGUI topicText;
    public string[] allTopics = new string[9];
    public string winText;
    private int topicIndex;

    // Start is called before the first frame update
    void Start()
    {
        topicIndex = Random.Range(0, 8);
        GameObject persistantObj = GameObject.FindGameObjectWithTag("PersistentObj") as GameObject;
        winText = persistantObj.GetComponent<PersistenceScript>().winText;
        public GameObject cards = GameObject.FindGameObjectWithTag("CardPosition");
    }  

}

Выше приведен мой код, и из сообщения об ошибке можно сделать вывод, что фигурные скобки } где-то отсутствуют. Однако мне трудно найти, куда добавить }. Направляющие пары скобок моего редактора VSCode также почему-то не показывают пунктирную линию для метода запуска. Кто-нибудь знает, как я могу это исправить? Спасибо.

public GameObject cards... внутри функции неверно. Локальные переменные не имеют спецификаторов доступа.
Retired Ninja 22.05.2024 12:34

Пожалуйста, прочтите минимальный воспроизводимый пример. Требуется ли какой-либо метод Update для воспроизведения проблемы? Нет. Его не следует включать.

Ruzihm 22.05.2024 17:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
80
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ошибка не в какой-то скобке. Вы объявляете переменные карты внутри Start() и вызываете их в Update(). Сначала объявите переменную снаружи как глобальную, как вы делаете с другими, и инициализируйте ее внутри Start().

Привет, Пабло! Вы можете оставить комментарий, если не уверены на 95 %, что получили правильный ответ. Пожалуйста, не давайте предположений в качестве ответа.

KamielDev 24.05.2024 07:58

Хорошо, извини, это просто мой способ говорить, но я отредактирую его, чтобы слова были более осторожными. Я имею в виду, я уверен, что ошибка была именно в этом.

Pablo CS 27.05.2024 09:51

Вам просто нужно поменять местами эти две строки:

    public GameObject cards = GameObject.FindGameObjectWithTag("CardPosition");
}

Код должен быть:

void Start()
{
    topicIndex = Random.Range(0, 8);
    GameObject persistantObj = GameObject.FindGameObjectWithTag("PersistentObj") as GameObject;
    winText = persistantObj.GetComponent<PersistenceScript>().winText;
}

public GameObject cards = GameObject.FindGameObjectWithTag("CardPosition");

// Update is called once per frame
void Update()
{
    topicText.text = allTopics[topicIndex];
Ответ принят как подходящий

вам следует переместить объявление cards непосредственно в свой класс и создать его экземпляр в своей Start-функции.

public class TopicSpawn : MonoBehaviour
{
    public GameObject[] catCards = new GameObject[9];
    public GameObject[] hamsterCards = new GameObject[9];
    public GameObject[] dogCards = new GameObject[9];
    public GameObject[] rabbitCards = new GameObject[9];
    public GameObject cards;

    public TextMeshProUGUI topicText;
    public string[] allTopics = new string[9];
    public string winText;
    private int topicIndex;
    // Start is called before the first frame update

    void Start()
    {
        topicIndex = Random.Range(0, 8);
        GameObject persistantObj = GameObject.FindGameObjectWithTag("PersistentObj") as GameObject;
        winText = persistantObj.GetComponent<PersistenceScript>().winText;
        cards = GameObject.FindGameObjectWithTag("CardPosition");
    } 
}

Если термины «объявление» и «создание экземпляра» вам незнакомы, возможно, вам будет полезно прочитать этот пост: https://stackoverflow.com/a/32291033/2528063

Кажется, вы случайно попытались объявить поле и присвоить ему значение внутри своего метода Start().

    void Start()
    {
        ...
        public GameObject cards = GameObject.FindGameObjectWithTag("CardPosition");
    }

Это недействительно.

Вместо этого вам следует объявить это поле отдельно вместе с другими полями, чтобы оно было доступно позже в вашем коде.

    public GameObject[] catCards = new GameObject[9];
    public GameObject[] hamsterCards = new GameObject[9];
    public GameObject[] dogCards = new GameObject[9];
    public GameObject[] rabbitCards = new GameObject[9];
    public GameObject cards;

А затем инициализируйте его отдельно в Startup()

    void Start()
    {
        ...
        cards = GameObject.FindGameObjectWithTag("CardPosition")
    }
    winText = persistantObj.GetComponent<PersistenceScript>().winText;
    public GameObject cards = GameObject.FindGameObjectWithTag("CardPosition");

Вам следует удалить ключевое слово public

Другие вопросы по теме