0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Unity】シーン間をまたいだ変数を作成する

Last updated at Posted at 2024-10-30

はじめに

こんにちは、かなたです。

Unityのゲーム開発中にシーン間をまたいだ変数を作成したいことがありました。

備忘録として解決方法を残しておきます。

使用想定

  • リザルトシーンで別シーンの変数を利用したい場合

  • 音を再生したい場合

1. シーン遷移しても残るクラスの作成

今回は例としてゲームを管理するクラスを作成します。

DontDestroyOnLoadが実装されている場合はシーンの遷移時にオブジェクトが破壊されず残ります。

GameManager.cs
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance { get; private set; }

    public ScoreModel scoreModel;

    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }
    }
}

クラスに定義した変数は以下のとおりです。
内部にtabletTotalとmissCountを持っています。

ScoreModel.cs
public class ScoreModel : MonoBehaviour
{
    public int tabletTotal;
    public int missCount;

    public void Default(int tabletTotal = 0, int missCount = 0)
    {
        this.tabletTotal = tabletTotal;
        this.missCount = missCount;
    }

    public void Miss()
    {
        ++this.missCount;
    }

    public void Correct()
    {
        --this.tabletTotal;
    }
}

2.最初のゲームシーンにクラスを設定する

HierarchyにGameManagerScoreModelを作成し、Inspectorにクラスを設定します。

image.png

3.シーン遷移で残るか確認

最初にDontDestroyOnLoadシーンが作成され、シーン遷移後にDontDestroyOnLoadが残ることを確認します。

image02.png

image03.png

Ex.変数を参照する

クラスはGameObject.Find()で探せます。
今回はゲーム管理クラスの変数を読み込みました。

InGameController.cs
public class InGameController : MonoBehaviour
{
    public ScoreModel scoreModel;

    void Start()
    {
        this.scoreModel = GameObject.Find("GameManager").GetComponent<GameManager>().scoreModel;
        scoreModel.Default(0, 0);
    }
}

おわりに

シーン間をまたいだ変数の作成について紹介しました。
Unityのゲーム開発では頻出の内容で、Unityゲーム開発者はできて当たり前の技術とは思います。
何かこの記事で為になることがあれば嬉しいです。
それではさよなら。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?