根据在Youtube上演示的教程,可以通过创建静态变量来保存得分并在其他脚本中修改它以奖励玩家。但是建议不要在Unity的C#脚本中使用静态变量。以下是我构建计分系统的步骤:在绑定到UI文本组件以显示分数的
ScoreManger
中:public class ScoreManager : MonoBehaviour {
public static int score;
Text text;
private void Awake()
{
text = GetComponent<Text>();
}
private void FixedUpdate()
{
text.text = "Score: " + score;
}
}
添加分数的步骤:
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
ScoreManager.score = ScoreManager.score + score;
Destroy(gameObject);
}
}
那么,如果不使用静态变量,最好的方法是什么?如果有人能解释为什么不建议使用静态变量,我会更感激。
编辑
尝试了@rogalski在答案中演示的事件处理方式,但IDE显示在ExecuteEvents.Execute<T>
的lambda函数上存在类型转换错误。