当我的玩家死亡时,分数继续并且不会重置,它将继续前一个会话的分数。一旦玩家死亡,我想重置为0,我已经添加了两个脚本
分数脚本:
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine;
public class ScoreScript : MonoBehaviour {
public static int scoreValue = 0;
Text score;
// Use this for initialization
void Start () {
score = GetComponent<Text>();
}
// Update is called once per frame
void Update () {
score.text = " " + scoreValue;
}
}
播放器脚本:
using UnityEngine;
using UnityEngine.SceneManagement;
public class Player : MonoBehaviour {
public float jumpForce = 10f;
public Rigidbody2D rb;
public SpriteRenderer sr;
public string currentColor;
public Color colorCyan;
public Color colorYellow;
public Color colorMagenta;
public Color colorPink;
void Start ()
{
SetRandomColor();
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown("Jump") || Input.GetMouseButtonDown(0))
{
rb.velocity = Vector2.up * jumpForce;
}
}
void OnTriggerEnter2D (Collider2D col)
{
if (col.tag == "ColorChanger")
{
ScoreScript.scoreValue += 1;
SetRandomColor();
Destroy(col.gameObject);
return;
}
if (col.tag != currentColor)
{
Debug.Log("GAME OVER!");
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
void SetRandomColor ()
{
int index = Random.Range(0, 4);
switch (index)
{
case 0:
currentColor = "Cyan";
sr.color = colorCyan;
break;
case 1:
currentColor = "Yellow";
sr.color = colorYellow;
break;
case 2:
currentColor = "Magenta";
sr.color = colorMagenta;
break;
case 3:
currentColor = "Pink";
sr.color = colorPink;
break;
}
}
}
答案 0 :(得分:0)
只要您的static
组件验证了死亡条件,就需要修改ScoreScript
内的Player
变量。
从消息来源来看,它看起来像是这条线:
if (col.tag != currentColor)
表示游戏结束。如果是这种情况,您需要在ScoreScript.score
语句后引用if
并将此静态变量的值设置为0以在死亡时重置分数。
答案 1 :(得分:0)
看起来scoreValue
是一个静态变量,这意味着它是全局维护而不是ScoreScript
行为的实例化。
首先,我会将scoreValue
更改为不是静态的。然后,就像你有RigidBody2D
之类的组件一样,我会在你的播放器中添加对ScoreScript
的公共引用,将该对象拖到Unity编辑器中的那个字段,然后每当进行更改时scoreValue
,使用您对ScoreScript
的新本地参考。 (所以,scoreScript
而不是ScoreScript
)。
与所有行为一样,ScoreScript
将在场景重置时重建,这意味着它将从0开始。它现在没有重新启动,因为加载新场景只是重新创建对象,它不会重新启动整个脚本环境以及全局静态变量。