Unity3d 如何将Score()函数从targetThit脚本调用到UpdateUI脚本?

Unity3d 如何将Score()函数从targetThit脚本调用到UpdateUI脚本?,unity3d,Unity3d,这是一个关于如何从targetThit脚本调用Score()函数到UpdateUI的快速问题?UpdateUI将把分数显示到画布上 下面是这两个脚本的片段 目标脚本 void OnTriggerEnter(Collider collider) { if (collider.gameObject.tag == "Green") { AddScoreGreen(); } else if (col

这是一个关于如何从
targetThit脚本
调用
Score()
函数到UpdateUI的快速问题?UpdateUI将把分数显示到画布上

下面是这两个脚本的片段

目标脚本

    void OnTriggerEnter(Collider collider) 
    {
        if (collider.gameObject.tag == "Green")
        {
            AddScoreGreen();
        }
        else if (collider.gameObject.tag == "Yellow")
        {
            AddScoreYellow();
        }
        else
        {
            NoScore();
        }
        Destroy(collider.gameObject);
    }

    public int AddScoreGreen()
    {
        return ScoreIncrease + 100;
    }

    public int AddScoreYellow()
    {
        return ScoreIncrease + 50;
    }

    public int NoScore()
    {
        return ScoreIncrease = 0;
    }
}
更新脚本

private readonly TargetHit targetHit;
// Update is called once per frame
void Update()
{
    scoreGreen.text = targetHit.GetComponent<TargetHit>().AddScoreGreen().ToString();
    playerLevelLabel.text = "Level 1";
    timerLabel.text = FormatTime(GameManager.Instance.TimePassed);        
}

private string FormatTime(float timeInSeconds)
{
    return string.Format("Time: " + "{0}:{1:00}", Mathf.FloorToInt(timeInSeconds / 60), Mathf.FloorToInt(timeInSeconds % 60));
}
private只读TargetHit-TargetHit;
//每帧调用一次更新
无效更新()
{
scoreGreen.text=targetHit.GetComponent().AddScoreGreen().ToString();
playerLevel label.text=“级别1”;
timerLabel.text=FormatTime(GameManager.Instance.TimePassed);
}
私有字符串FormatTime(浮点时间分段)
{
返回string.Format(“时间:”+“{0}:{1:00}”、Mathf.FloorToInt(timeinsectonds/60)、Mathf.FloorToInt(timeinsectonds%60));
}
ScoreGreen()
方法暂停Unity,立即暂停图标按下,Unity显示无错误


提前感谢您的帮助。

首先,您实际上并没有像这样提高分数:

 public int AddScoreGreen()
 {
     return ScoreIncrease + 100;
 }
您只是返回
分数增加值
,返回值加上100<代码>分数增加未修改

你可能想要这个:

public void AddScoreGreen()
{
    ScoreIncrease += 100;
}
其次,这似乎是错误的:

targetHit.GetComponent<TargetHit>()
公开:

public TargetHit targetHit;
然后在Inspector中,将带有脚本的对象拖动到“UpdateUI”脚本的插槽中

那么你应该可以称之为:

scoreGreen.text = targetHit.getScore();
为此,您应该实现“getter”函数:

public int getScore ()
{
    return ScoreIncrease;
}

也许可以将ScoreIncrease重命名为“score_green”,并为其他颜色添加更多变量。

感谢对代码的更正。我在运行这些时遇到了错误。也许我会从可能解决一些错误的小需求开始。
public int getScore ()
{
    return ScoreIncrease;
}