C# 我无法在其他脚本(unity 2D)中使用该变量。有什么建议吗
我想使用下面脚本中的变量levelButtons和levelunlocked:-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 (
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中引用相应的组件;)