Chill Naga Ответов: 2

Ошибка "неожиданный символ" при использовании monodevelop


Приветствую! Я прохожу курс, который учит разработке игр Unity в дополнение к основам программирования на C#, и я дошел до той части, где я должен сделать свое собственное текстовое приключение в свободной форме. Для этого я копирую базовую структуру с предыдущей, видео-ассистированной. И все же я нахожу некоторые странные ошибки, которые не могу объяснить.

Вот сценарий до сих пор :

использование UnityEngine; использование UnityEngine.Пользовательский интерфейс; использование системы.Коллекции;

публичная классная игра: MonoBehaviour {

 public Text text;
 
 private enum states {start, light, cave, path1, egg, TH, ocean, bEnd1, summer, basement, weed, upstairs, devil, awake, bEnd2, computer, bEnd3, GOLDEN}
 private states myState;
 // Use this for initialization
 void Start () {
     myState = states.start;
 }
 
 // Update is called once per frame
 void Update () {
     print (myState);
     if (myState == states.start) {
         start(); }
     else if (myState == states.light) {
         light(); }
     else if (myState == states.cave) {
         cave(); }
     else if (myState == states.path1) {
         path1(); }
     else if (myState == states.egg) {
         egg(); }
     else if (myState == states.TH) {
         TH(); }
     else if (myState == states.ocean) {
         ocean(); }
     else if (myState == states.bEnd1) {
         bEnd1(); }
     else if (myState == states.summer) {
         summer(); }
     else if (myState == states.basement) {
         basement(); }
     else if (myState == states.weed) {
         weed(); }
     else if (myState == states.upstairs) {
         upstairs(); }
     else if (myState == states.devil) {
         devil(); }
     else if (myState == states.awake) {
         awake(); }
     else if (myState == states.bEnd2) {
         bEnd2(); }
     else if (myState == states.computer) { 
         computer(); }
     else if (myState == states.bEnd3) {
         bEnd3(); }
     else if (myState == states.GOLDEN) {
         GOLDEN(); }
 }
}

 void start () {
 text.text = "This is like a bad dream. You don't know how you got here, where this place is, or why you got here, but you know that you feel uneasy. " +
             "Something is very wrong with all of this. You should try and look for a way out of...wherever this is! \n \n  " +
             "You could go and see about that [L]ight in the distance, investigate the sound coming from a nearby [C]ave, or head down the nearby [P]ath..." ;
 if (Input.GetKeyDown(KeyCode.L)) {myState = states.light;}
 else if (Input.GetKeyDown(KeyCode.C))    {myState = states.cave;}
 else if (Input.GetKeyDown((KeyCode.P))    {myState = states.path1;}
 }


Моя проблема : Unity, похоже, не нравится последний возможный символ {(предфинальная строка) и говорит, что это неожиданный символ. Аналогично, пустота в этом фрагменте кода также неожиданна. Однако если я удалю ; после текстовой части того же блока, то вместо этого возникнет проблема с оператором "if" этого же блока. Насколько я вижу, я отлично копирую необходимые записи и код, так что это довольно озадачивает.

Мне было интересно, не потому ли это, что мое начальное состояние игры называется start with a non-capital S, тогда как функция с большой буквы S существует, но, возможно, нет? Казалось, он никогда не возражал против самого старта.

Другая информация: Unity V 4.6.9. f1 (в соответствии с инструкциями моего курса для простых, небольших проектов)

Спасибо.

Edit: Здравствуйте и спасибо за Ваш быстрый и полезный ответ,
Kornfeld Eliyahu Peter !

I'm not sure I understand your response in terms of what I should do, but adding another ( to it and the preceding line just shifts the Unexpected Symbol problem to the { character at the end of the same statement.

Apologies

What I have tried:

Consulting prior, working script, posting on official Unity forums (Did not even come off Moderation for nearly 3 days at this point), analyzing code.

2 Ответов

Рейтинг:
12

Jochen Arndt

Ваш второй void start() функция находится вне любого класса. Вот почему вы получаете неожиданную ошибку "пустоты".

Я бы ожидал, что эта функция должна принадлежать MonoBehaviour класс (переместить последнее закрывающее '} ' после update() функция до конца исходного файла). Но тогда у вас будет два start() функции (перемещение myState = states.start кодовую строку ко второй функции и удалить первую).


Chill Naga

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

Я ценю потраченное время.

Рейтинг:
1

Kornfeld Eliyahu Peter

else if (Input.GetKeyDown((KeyCode.P))    {myState = states.path1;}
--      (                ((         ))
Здесь нет пар-слишком много или слишком мало...