C# 我无法在其他脚本(unity 2D)中使用该变量。有什么建议吗

C# 我无法在其他脚本(unity 2D)中使用该变量。有什么建议吗,c#,unity3d,2d,C#,Unity3d,2d,我想使用下面脚本中的变量levelButtons和levelunlocked:- public class LevelSelector : MonoBehaviour { public Button[] levelButtons; private void Start() { int levelunlocked = 1; int levelReached = PlayerPrefs.GetInt("levelReached", levelunlocked); for (

我想使用下面脚本中的变量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;
        }
    }
 }
}
公共类级别选择器:MonoBehavior
{
公共按钮[]水平按钮;
私有void Start()
{
int-levelunlocked=1;
int-levelReach=PlayerPrefs.GetInt(“levelReach”,levelunlocked);
对于(int i=0;i已达到水平)
{
levelButtons[i]。可交互=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();
    }
 }
}
公共类级别:单一行为
{
[SerializeField]int breakableBlocks;
SceneLoader SceneLoader;
私有void Start()
{
sceneloader=FindObjectOfType();
}
公共void CountBreakableBlocks()
{
breakableBlocks++;
}
公共图书馆
{
易碎块--;

如果(breakableBlocks您可以在
Start
方法之外声明
levelunlocked
LevelReach
,并将其公开,如下所示:

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;
            }
        }
    }
}
公共类级别选择器:MonoBehavior
{
公共按钮[]水平按钮;
公共int levelunlocked=1;
达到了公众的期望水平;
私有void Start()
{
levelReach=PlayerPrefs.GetInt(“levelReach”,levelunlocked);
对于(int i=0;i已达到水平)
{
levelButtons[i]。可交互=false;
}
}
}
}
然后要访问
levelunlocked
levelReach
,请使用
GetComponent
获取对
LevelSelector
的引用,或者将字段设置为静态,并通过执行
LevelSelector.levelunlocked
LevelSelector.levelReach
来访问它们(没问题;)我也不建议仅仅为了访问字段而将字段设置为静态!如果有多个组件呢?(虽然在这种情况下不太可能,但仍然非常不干净。)相反,我会稍微扩展一下
GetComponent
部分,或者简单地说您可以添加一个
public LevelSelector
并在inspector中引用相应的组件;)