弾を当てたらスコアを+1する処理を作っています。
そのために、スコアを表示させるためのコード(上側)と、弾が当たった時にスコアを+1するコード(下側)を書きました。
public class ScoreCounter : MonoBehaviourPunCallbacks { Text ScoreText; int score; public int Score { set { ScoreUpdate(); score = value; } get { return score; } } void Start() { ScoreText = GetComponent<Text>(); Score = 0; } void ScoreUpdate() { ScoreText.text = "Score:" + Score.ToString("00"); Debug.Log(Score); } }
void OnTriggerEnter(Collider other) { if (other.gameObject.tag == ("Player")) { scoreCounter.Score += 1; Debug.Log(scoreCounter.Score); } }
スコアを表示させるためのコードは、実際にスコアを表示するUIにアタッチしています。
弾が当たった時にスコアを+1するコードは、弾にアタッチしています。
ですがこの2つのコードでは上手く動きませんでした。
具体的には、弾側で+1されたScore変数の値と、実際にスコアを表示するScoreCounter側のScore変数の値がずれてしまっています。
例えば、弾側のScore変数の値が1の場合はScoreCounter側での値は0、弾側のScore変数の値が2の場合はScoreCounter側での値は1というように、1だけ値がずれてしまいます。
こうなってしまう原因が何なのかがわかりません。
この質問に載せた2つのコードに問題がありますか?
それとも、なにか別の所に問題がある可能性が高いですか?
もしこの2つのコードに問題がある場合は、どの部分が問題なのかを教えてください。
追記
ありがとうございます。
回答してくださった二方が言っていた通り、scoreへの値代入を後に行っていたことが原因でした。
順番を逆にしたら問題なく動きました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。