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?

More than 3 years have passed since last update.

Unity:タイトル画面でのロードとシーンコントロール

Posted at

セーブについては前回やった。
タイトル画面でロードしてシーンを切り替える、というのをやってみる。
つまりタイトル画面でデータをロードして、他のシーンに値を引き渡す、という事をやるメモ。

こことか見ながらやってみる。

GUI

シーンの切り替えをやるには複数のシーンが必要なのでとりあえず作成する。
メニュー画面の作りについてはここ辺りが詳しそうだけど、
とりあえずお試しなのでUIは普通のボタンを配置
なのと、UIでも新しいInputSystemを使ってみたい(上の例だとUIとインプット連携させずに自前処理してるぽい)

単純な操作の場合はEvenSystemを配置するとキーでの自動選択が効くので、ボタンの選択は出来た。Replaceボタンを押すと新しいInputSystemを利用するようになる。

新しいビットマップ イメージ.png

あとは実際に選択された時の挙動をスクリプトで書けば良い。
空のオブジェクトを作って、Managerスクリプトを作成。
シーン間のデータをグローバルを使わずに渡す方法はここにあったので従って作成。テストということで、面倒なので同じスクリプトを別シーンのPlayerにセットして使う事にした。

GameManger.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets._2D;

public class GameManager : MonoBehaviour {
    public Vector3 pos;
    public void StartGame() {
        SceneManager.LoadScene("SampleScene");
    }

    public void LoadGame() {
        SaveManager saveManager = new SaveManager();
        string SaveDirPath = Application.persistentDataPath;
        SaveData sdata = saveManager.DataLoad(SaveDirPath, "test.sv");
        if (sdata != null) {
            SceneManager.sceneLoaded += GameSceneLoaded;
            pos = new Vector3(sdata.x, sdata.y, sdata.z);
        }

        SceneManager.LoadScene("SampleScene");
    }

    private void GameSceneLoaded(Scene next, LoadSceneMode mode) {
        var gameManager = GameObject.FindWithTag("Player").GetComponent<GameManager>();

        // データを渡す処理
        gameManager.pos = pos;
        gameManager.LoadedValsSet();

        SceneManager.sceneLoaded -= GameSceneLoaded;
    }

    private void LoadedValsSet() {
        this.transform.position = pos;
    }
}


タイトル画面ではボタンにMangarをアタッチした上で、クリック時に自分自身を持ってきて関数選択。
遷移先シーンでは、Playerタグを付けて、このManagerスクリプトをセット。

新しいビットマップ イメージ (2).png

これでロードしてデータ(セーブしたプレーヤーの位置)を引き渡すことが出来た。

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?