Доступ к переменной * stati c вне класса или без переменной c изменение переменной в публикации c void - PullRequest
0 голосов
/ 22 января 2020

я получил этот скрипт:

public static bool noTitleTrigger = false;
static GameObject shop;

static GameObject player;
String col;

// Start is called before the first frame update
void Start() {
    shop = GameObject.Find("Shop");
    shop.SetActive(false);
}

Затем это как публичная c пустота, которую я вызвал кнопкой OnClick ().

public void StartShop() {
    noTitleTrigger = true;
    shop.SetActive(true);
    Debug.Log("Log");
}

Это в другом скрипте проверить переменную noTitleTrigger

if (titleScreen == true && gm.noTitleTrigger == false && firstTouch.position.y > Screen.height / 8) {
    titleScreen = false;
    title.enabled = false;
    buttons.SetActive(true);
}

Я получаю эту ошибку, если onTitleTrigger is stati c:

Assets \ Scripts \ CanvasManager.cs (36,48 ): ошибка CS0176: член 'GameManager.noTitleTrigger' не может быть доступен со ссылкой на экземпляр; вместо этого уточните имя типа

Если я не делаю переменную stati c onTitleTrigger, тогда ее значение не будет изменено publi c void StartShop ();

Любая помощь будет великолепна: D

1 Ответ

2 голосов
/ 22 января 2020

Измените это:

if (titleScreen == true && gm.noTitleTrigger == false && firstTouch.position.y > Screen.height / 8) {

На это:

if (titleScreen == true && GameManager.noTitleTrigger == false && firstTouch.position.y > Screen.height / 8) {

То, что компилятор говорит вам, что вы пытаетесь получить доступ к переменной * stati c noTitleTrigger через экземпляр class GameManager (gm.noTitleTrigger). Когда вы используете gm = AddComponent<GameManager>() или gm = GetComponent<GameManager>(), gm - это ссылка на экземпляр , об этом упоминается ошибка.

Поскольку элемент stati c, вы вместо этого следует обращаться к нему через тип, который его содержит (GameManager.noTitleTrigger).

...