Unity C# Как ссылаться на индекс в другом скрипте? - PullRequest
0 голосов
/ 10 марта 2020

В следующем скрипте я получаю сообщение об ошибке «Недоступно из-за уровня защиты»:

public class WrongAnswerScript : MonoBehaviour
{
    void OnMouseDown()
    {
        GetComponent<Renderer>().material.color = Color.red;
        GameManager.UpdateMistakes(1);
    }
}

Вот код класса GameManager, который управляет обновлением:

public class GameManager : MonoBehaviour
{
    public List<GameObject> targets;
    public TextMeshProUGUI mistakeText;
    public int mistakes;

    void Start()
    {    
            mistakes = 0;
            mistakeText.text = "Mistakes: " + mistakes;
    }

    // Update is called once per frame
    void UpdateMistakes(int mistakesToAdd)
    {
        mistakes += mistakesToAdd;
        mistakeText.text = "Mistakes: " + mistakes;
    }
}

Как правильно запустить мой сценарий? Я довольно новичок в C#, поэтому я изо всех сил пытаюсь понять основы.

1 Ответ

1 голос
/ 10 марта 2020

сделайте функцию publi c, чтобы она стала доступной.

public void UpdateMistakes(int mistakesToAdd)

Возможно, вам потребуется убедиться, что вы ссылаетесь на существующий экземпляр GameManager, который находится где-то в вашей сцене.

private bool HasBeenClicked = false;
void OnMouseDown()
{
    GetComponent<Renderer>().material.color = Color.red;
    //Only do this block when you have not clicked before
    if (!HasBeenClicked)
    {
        //get a reference to the gamemanager that is already somewhere in the scene
        GameManager gameManager = (GameManager)FindObjectOfType(typeof(GameManager));
        gameManager.UpdateMistakes(1);
        HasBeenClicked = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...