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;
}