(Unity)タイトルシーンでセレクトしたオブジェクトをメインシーンでアクティブ状態にする(SceneManager.sceneLoadedの活用)

(タイトルシーン)

・ボタンを4個作成


(ボタン専用のスクリプト)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class CarSelectButton : MonoBehaviour
{
    public string selectCarName;

    public void CarSelectButtonClicked()
    {
        // ★ポイント
        // シーン遷移時に呼び出したいメソッドを登録する(今回の場合は、SetCar())
        SceneManager.sceneLoaded += SetCar;

        SceneManager.LoadScene("CarStage");
    }

    // ★ポイント
    // 呼び出すメソッドを定義する(中身を書く)
    void SetCar(Scene next, LoadSceneMode mode)
    {
        CarSelect cs = GameObject.Find("CarSelect").GetComponent<CarSelect>();

        cs.carName = selectCarName;

        // 登録したメソッドを削除する。
        SceneManager.sceneLoaded -= SetCar;
    }
}

(ボタンの設定)


(メインシーン)

*オブジェクトを4個作成

*すべて非アクティブ状態にする。


<タイトルシーンでセレクトしたオブジェクトをアクティブ状態にする>

(スクリプト)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CarSelect : MonoBehaviour
{
    public GameObject redCar;
    public GameObject greenCar;
    public GameObject blueCar;
    public GameObject yellowCar;

    public string carName { get; set; }

    void Start()
    {
        if (carName == "red")
        {
            redCar.SetActive(true);
        }
        else if (carName == "green")
        {
            greenCar.SetActive(true);
        }
        else if (carName == "blue")
        {
            blueCar.SetActive(true);
        }
        else if (carName == "yellow")
        {
            yellowCar.SetActive(true);
        }
    }
}

(設定)


(実行結果)

・タイトルシーンでセレクトしたオブジェクトが、メインシーンでアクティブ状態になっていれば成功