Unity C# Ошибка: «Ожидается определение типа или пространства имен, или конец файла» - PullRequest
0 голосов
/ 08 апреля 2020

Я много раз пытался исправить это, но безуспешно. Всякий раз, когда я закрываю свою функцию в строке 14 (public void FrenchButton ()), он думает, что закрывает public class LanguageMenuScript : MonoBehaviour. Как я могу это исправить?

Код ниже:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class LanguageMenuScript : MonoBehaviour
{
    public Text languageTitleText;

    public void FrenchButton()
    {
        public string language = "French";
    }


    void Start (){
        Text.text = Language;
    }

    void Update()
    {
        if (language == "French")
        {
            languageTitleText.text = "Langue";
        }

    }


}

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

У вас есть publi c string language = "French"; внутри функции. У вас не может быть модификатора доступа внутри функции, и вы не можете получить доступ к переменным, объявленным внутри функции извне. То, что вы хотите сделать, это объявить его рядом с languageTitleText внутри области видимости. затем вы можете присвоить значение в вашей функции FrenchButton, если хотите -> language = "French"; например.

1 голос
/ 08 апреля 2020

Решение 1

Используйте подходящий пакет интернационализации. Вы выполняете намного больше работы, чем хотели бы, используя свой текущий подход. Эта концепция (обычно с использованием I18n) и ее применение к Unity обсуждается здесь .

Решение 2. Исправление кода

Возможно, вы захотите использовать enum как показано ниже После того, как вы изменили сценарий, проверьте компонент в инспекторе. Теперь вы можете выбирать из заданного набора языков, определенных в вашем перечислении.

Вот официальное руководство о том, как использовать enum s в Unity.

Код :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public enum Language {
  French: 1,
  German: 2,
  English: 3
}

public class LanguageMenuScript : MonoBehaviour
{
    public Text languageTitleText;
    public Language language = Language.French;

    void Start (){
    }

    void Update()
    {
        if (language == Language.French)
        {
            languageTitleText.text = "Langue";
        }
        else if (language == Language.German) 
        {
            languageTitleText.text = "Sprache";
        }
        else
        {
          // take English as default
          languageTitleText.text = "Language";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...