我不能在其他脚本(Unity 2D)中使用该变量.有什么建议



我想使用变量calte lacttons并从下面的脚本中使用levelunlock: -

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 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的引用,或使字段静态并通过执行LevelSelector.levelunlockedLevelSelector.levelReached

最新更新