Я прочитал много сообщений об этом исключении, но ни один не дает мне рабочего ответа ... Я начинающий в единстве, и я не могу решить одну маленькую проблему, поэтому я надеюсь на вашу помощь.Любая полезная ссылка или что-то поможет мне.И любая помощь приветствуется.
У меня есть две сцены.с двумя сценариями, прикрепленными к разным объектам.На объекте я получил скрипт контроллера счета в другом скрипте для табло, и мне нужно передать счет на табло , но я не знаю, как это сделать правильно, и у меня ничего не работает.
Это мой скрипт ScoreController (он прикреплен к одному игровому объекту на игровой сцене) (он прикреплен к другому объекту с именем "lialia", как вы видите в скрипте Scorecontroller)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ScoreController : MonoBehaviour {
public Text scoreText;
public GameObject gameOverText;
public bool gameOver = false;
int score = 0;
public static int finall=0;
void Update() {
scoreText.text = score.ToString();
}
public void OnTriggerEnter2D(Collider2D target)
{
if (target.tag == "Bomb")
{
Time.timeScale = 0;
gameOverText.SetActive(true);
gameOver = true;
finall = PlayerPrefs.GetInt("score");
GameObject.Find("lialia").GetComponent<ScoreBoard>().CheckForHighScore(finall);
}
}
public void OnTriggerExit2D(Collider2D target){
if (target.tag == "Fruit") {
Destroy(target.gameObject);
score++;
finall = score;
PlayerPrefs.SetInt("score", finall);
}
}
}
Это мой ScoreBoardScript (вы можете смотреть только на CheckForHIghScore (); метод), который прикреплен к объекту "lialia", как вы видели в предыдущем скрипте
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScoreBoard : MonoBehaviour {
public Text[] highScores;
int[] highScoreValues;
void Awake()
{
DontDestroyOnLoad(gameObject);
}
void Start () {
highScoreValues = new int[highScores.Length];
for (int x =0; x < highScores.Length; x++) {
highScoreValues[x] = PlayerPrefs.GetInt("highScoreValues" + x);
}
DrawScores();
}
void SaveScore() {
for (int x =0; x < highScores.Length; x++) {
PlayerPrefs.SetInt("highScoreValues" + x, highScoreValues[x]);
}
}
public void CheckForHighScore(int finall) {
for (int x = 0; x < highScores.Length; x++) {
if (finall > highScoreValues[x]) {
for (int y=highScores.Length - 1; y > x; y--){
highScoreValues[y] = highScoreValues[y - 1];
}
highScoreValues[x] =finall;
DrawScores();
SaveScore();
break;
}
}
}
void DrawScores() {
for (int x = 0; x < highScores.Length; x++) {
highScores[x].text = highScoreValues[x].ToString();
}
}
// Update is called once per frame
void Update () {
}
}