【问题标题】:variable not updating on other script变量未在其他脚本上更新
【发布时间】:2019-03-06 12:44:36
【问题描述】:

所以这与我提出的另一个问题一致,但我采取了不同的路线。我的问题是在这个脚本中,我正在从 LevelManager 脚本中找到玩家的等级。我将为每个玩家级别使用不同的面板,并随着级别的增加使它们处于活动状态。不是我理解的最好方式。我遇到的问题是此脚本中的级别没有更新为我的其他脚本中的 currentLevel,因此面板没有打开,因为级别始终为 0。感谢任何帮助。尼尔

public GameObject Panel1;
public GameObject Panel2;
public GameObject Panel3;
public GameObject levelscript;
public int level;

public void Start()
{
    GameObject scoreEventTrigger = GameObject.Find("ScoreEventTrigger");
    LevelManager levelManager = scoreEventTrigger.GetComponent<LevelManager>();
    level = levelManager.currentLevel;
}

public void OpenPanel1()
{
    if (level == 1)
    {
        if (Panel1 != null)
        {
            Panel1.SetActive(true);
        }
    }
}
public void OpenPanel2()
{
    if (level == 2)
    {
        if (Panel2 != null)
        {
            Panel2.SetActive(true);
        }
    }
}

}

【问题讨论】:

  • 这看起来不错。您确定您在LevelManager 中正确调整currentLevel 吗?
  • 感谢您回复@AliKanat。是的,分数在游戏中完美调整。只是不在此脚本附加到的按钮上。

标签: c# user-interface unity3d


【解决方案1】:

您仅在开始时加载脚本。 当您触发某些事件时,您需要检查您的级别分数,例如“onGetXp”。在此事件中,您检查您的级别并应用面板。

【讨论】:

  • 谢谢。这说得通。你能给我贴一个例子吗?我尝试制作一个新功能,并在更新功能中尝试过。提前感谢您的帮助@joreldraw
  • 举个很好的例子,我需要了解更多关于您的 XP 或分数系统以及您的 Levelmanager 的信息。但简单的方法是在每次获得经验或分数时检查您的水平,而不仅仅是在开始时。如果不是,你一开始只检查你的水平1次。
  • 按钮 onclick 方法可以在这里工作吗?因为我在 ontriggerenter 事件中增加 xp,然后当 currentxp >= neededxp 我调用 LevelUp 函数。那么我可以在上面的脚本中创建一个函数来调用 start 方法中的所有内容,而不是在按钮 onclick 事件中调用它,然后在检查器中分配它吗?那行得通吗?或者您还需要了解哪些其他信息?再次感谢您的帮助@joreldraw
  • 如果是增加 xp 的唯一方法,ontriggerenter 你会为 xp 执行所有操作并最后调用 levelup 函数进行检查。
  • 你能提供一个例子还是你需要更多信息? ontriggerenter 函数是玩家获得经验的唯一途径。 @joreldraw
猜你喜欢
  • 2015-07-30
  • 2012-12-26
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
相关资源
最近更新 更多