Unity視線アプリscene移動④ 絵カード画面からスタート画面に戻る。位置もサイズも保存する。

タイトルの内容を行います。

 

スタート画面を作ったので、絵カードをしていて

背景色を変えたいときには

再びスタート画面に戻る方法が必要になります。

 

ボタンにしようか、

キーを押して戻すようにしようか悩みました。

 

とりあえず、

今まで絵カードのシーンでは

録音以外は全てキーボードで出来るようにしてきたので

今回もキーを使うことにしました。

 

ただ、

キーで行うことが増えすぎると

何が何キーだったか訳が分からなくなってきてしまうので、

いくらヘルプが画面上で見られるからと言っても、

↓↓(このゴチャゴチャした文字がヘルプ。何キーで何ができるか書いてある)

 

限度があるかなと思います。

 

とりあえず今回は「戻る」のMを

スタート画面に戻るキーにしました。

 

これは

 

MainCameraの

 void Update()
    {
     

    }

 

 

    //Mキーをおしたらスタート画面に戻る
        if (Input.GetKeyDown(KeyCode.M))
        {
            SceneManager.LoadScene("Open");


        }

入れることで

簡単に出来ました。

 

ただ、、、

 

Escキーでアプリを終了したときは位置もサイズも保存されていたのですが、

Mキーでスタート画面に戻って、再度絵カード画面に行ったら

位置もサイズも保存されていませんでした。

 

そこで、

MainCameraに入れていた先ほどの

//Mキーをおしたらスタート画面に戻る
        if (Input.GetKeyDown(KeyCode.M))
        {
            SceneManager.LoadScene("Open");


        }

を、消して、

image1に入れることにしました。

そこで

 

  //Mキーをおしたら位置などの記憶とスタート画面に戻る
        if (Input.GetKeyDown(KeyCode.M))
        {
            //**保存の為位置やサイズを代入
            hozonkansusizeMbutton();
            SceneManager.LoadScene("Open");

        }

 

hozonkansusizMbuttonを作って、

 

  //Mキーでスタート画面に戻るときにポジションと位置の両方をいっぺんに保存する
    public void hozonkansusizeMbutton()
    {
        // スコアを保存
        PlayerPrefs.SetFloat("xScale", xScale);
        PlayerPrefs.SetFloat("yScale", yScale);
        PlayerPrefs.SetFloat("x1Posi", transform.position.x);
        PlayerPrefs.SetFloat("y1Posi", transform.position.y);

        PlayerPrefs.Save();

    }

 

これをクラス内に作りました。

 

こうすることで、サイズの保存は3枚の絵カード共に出来ました。

 

しかし、位置はimage1がアタッチされている

ima1Cuオブジェクトのみ保存され、他は保存されませんでした。

 

スクリプトを見たら、

サイズはimage1が基準になって、他のサイズを決めていますが、

位置は各オブジェクトごとに保存していました。

 

そこで、image2、image3にも以下を入れました。(image2の例です)

  //Mキーでスタート画面に戻るときに位置を保存
    public void hozonkansusizeMbutton()
    {
        // 位置を保存
        PlayerPrefs.SetFloat("x2Posi", transform.position.x);
        PlayerPrefs.SetFloat("y2Posi", transform.position.y);

    }

 

updateに

 //Mキーをおしたらスタート画面に戻る
        if (Input.GetKeyDown(KeyCode.M))
        {
            //**保存の為位置やサイズを代入
            hozonkansusizeMbutton();
          

        }

 

正直、もっと効率の良いやり方があるんじゃないかとは

思うのですが、今の自分に思いつくのはこれだったので

とりあえず、こうしておきました。