Я не могу использовать переменную в другом скрипте (Unity 2D).Какие-либо предложения - PullRequest
0 голосов
/ 14 марта 2019

Я хочу использовать переменные levelButtons и levelunlocked из скрипта ниже: -

public class LevelSelector : MonoBehaviour
{
public Button[] levelButtons;
private void Start()
 {
    int levelunlocked = 1;
    int levelReached = PlayerPrefs.GetInt("levelReached", levelunlocked);
    for (int i = 0; i < levelButtons.Length; i++)
    {
        if (i + 1 > levelReached)
        {
            levelButtons[i].interactable = false;
        }
    }
 }
}

и использовать их в этом скрипте ниже.это было бы огромной помощью.

public class Level : MonoBehaviour
{
[SerializeField] int breakableBlocks;  
SceneLoader sceneloader;

private void Start()
{
    sceneloader = FindObjectOfType<SceneLoader>();
}

public void CountBreakableBlocks()
{
    breakableBlocks++;
}

public void BlockDestroyed()
 {
    breakableBlocks--;
    if (breakableBlocks <= 0)
    { 
        sceneloader.LoadWinScreen();
    }
 }
}

какие-либо идеи?его единство c #.

1 Ответ

0 голосов
/ 14 марта 2019

Вы можете объявить levelunlocked и levelReached вне метода Start и сделать их общедоступными, например:

public class LevelSelector : MonoBehaviour
{
    public Button[] levelButtons;
    public int levelunlocked = 1;
    public int levelReached;
    private void Start()
    {
        levelReached = PlayerPrefs.GetInt("levelReached", levelunlocked);
        for (int i = 0; i < levelButtons.Length; i++)
        {
            if (i + 1 > levelReached)
            {
                levelButtons[i].interactable = false;
            }
        }
    }
}

Затем получить доступ к levelunlocked и levelReached, получитьссылаться на LevelSelector, используя GetComponent, или сделать поля статическими и получить к ним доступ, используя LevelSelector.levelunlocked или LevelSelector.levelReached.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...