我不能在不同的脚本(unity 2D)中使用该变量。有什么建议么

I cant use the variable in a different script (unity 2D). Any suggestions

我想在下面的脚本中使用变量 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#.

您可以在 Start 方法之外声明 levelunlockedlevelReached 并使它们成为 public,如下所示:

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;
            }
        }
    }
}

然后访问 levelunlockedlevelReached,使用 GetComponent 获取对 LevelSelector 的引用,或者使字段静态并通过执行 [=18] 访问它们=] 或 LevelSelector.levelReached.