私は単純な2Dゲームを1つにまとめるだけで、開始シーン、ゲームシーン、およびゲームオーバーシーンの3つのシーンを持っています。私はゲームのゲームのスコアを画面上に表示したい。私はDontDestroyOnLoad()関数を使って画面上にゲームを引き継ぐゲームシーンでスコアマネージャのゲームオブジェクトを作成しました。ゲームマネージャが管理するスコアにアクセス権を与えました。私は自分のコードをデバッグしていましたが、スコアはスコアマネージャに変換され、画面上のゲームが読み込まれても維持されますが、何らかの理由でスコアテキストオブジェクトを更新できません。ここに私のコードは次のとおりです。ゲームで画面上のスコアを統一的に表示するためにプログラムでテキストを変更する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour {
public static ScoreManager Instance;
private GameController gameController;
private int scoreInstance;
private Text scoreText;
// When scene is first loaded
void Awake() {
this.InstantiateController();
}
// Use this for initialization
void Start() {
GameObject gameControllerObject = GameObject.FindWithTag("GameController");
if (gameControllerObject != null)
{
gameController = gameControllerObject.GetComponent<GameController>();
}
GameObject scoreTextObject = GameObject.FindWithTag("ScoreText");
if (scoreTextObject != null)
{
scoreText = scoreTextObject.GetComponent<Text>();
}
scoreInstance = 0;
scoreText.text = "";
}
// Update is called once per frame
void Update() {
scoreInstance = gameController.score;
Debug.Log("Score: " + scoreInstance.ToString());
scoreText.text = scoreInstance.ToString();
}
private void InstantiateController()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(this);
}
else if (this != Instance)
{
Destroy(this.gameObject);
}
}
}
私はちょうどスコアマネージャーので、テキストコンポーネントで、それが公共およびドラッグすることはできません考え出しので、だから私は、プログラム起動機能で「スコアテキスト」UIコンポーネントを集めてみました実際にはスコアテキストオブジェクトとは異なるシーンにあります。私はまた、スコアマネージャが実際に画面上のゲームの一部であるときにそれを行うことができるように、更新機能にテキストコンポーネントを集めるためにこの全部のコードを追加しようとしました。何も動作していないと私は理由が分からない。誰も私にこれを手伝ってもらえますか?また、私は "NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていない"エラーを取得し続けます。助けを前にありがとう。
startメソッドとアップデートのすべての行の最後の行を与えることができますオブジェクトが初期化されているかどうかわからないのでnullの例外ですが、そのプロパティにはアクセスします。 "GetComponents"をデバッグして、何かが使用されているかどうかを確認してください。 –
ありがとう! :)私は両方のGetComponentsをデバッグしました。エラーは、実際には、@ JasonLangメソッドがNullReferenceエラーを修正したことを示唆して、スコアの更新を維持した同じ問題によって引き起こされました。 – jedimaster7