(スクリプト)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ScoreManagerX : MonoBehaviour
{
private int score = 0;
public Text scoreLabel;
void Start()
{
scoreLabel.text = "得点:" + score.ToString("D10");
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
score += 300;
scoreLabel.text = "得点:" + score.ToString("D10");
if(score > 1000)
{
// ★イベントの登録(次のシーンで呼び出したいメソッドを指定する)
SceneManager.sceneLoaded += KeepScore;
SceneManager.LoadScene("KeepData2");
}
}
}
// ★このメソッドがシーン切り替え時に、次のシーンで実行される。
void KeepScore(Scene next, LoadSceneMode mode)
{
// 次のシーンの中にあるオブジェクトを取得
// そのオブジェクトに付加されているスクリプトを取得
var sm = GameObject.Find("ScoreManager").GetComponent<ScoreManagerX>();
// そのスクリプト内にあるスコアに、このシーンで獲得したスコアデータをセットする(=スコアデータを引き継ぐ)
sm.score = score;
// イベントの削除
SceneManager.sceneLoaded -= KeepScore;
}
}
(構成)
- ステージ1
- ステージ2
(実行結果)
- スコアデータが次のシーンに引き継がれていたら成功です。