FC2ブログ
    05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Unityでのシーン間のデータの受け渡し…初心に戻ってみました。 

    花粉が飛び始めた感じですね。
    今年もまた多いとか・・・つらい時期が始まりました。坂内っす。

    ネタが思いつかないので、初心に戻って「シーンを跨いだデータの渡し方」をやってみましょう。

    まずはシーンを2つ用意します。

    シーン


    シーン


    やることは、「シーン1のインプットフィールドに文字を入力し、ボタンで次のシーン(シーン2)に行って、テキストにシーン1で入力した文字を出力する。」です。

    シーン間で引き継げるクラスとオブジェクトを用意する。
    まずは、以下のクラスを作成。

    引き継ぎ用クラス
    [DeliverClass.cs]
    using UnityEngine;

    public class DeliverClass : MonoBehaviour
    {
    public string deliverString;

    private void Start() {
    DontDestroyOnLoad(this);
    }
    }


    上記クラスをシーン1に置きます。

    ●シーン1



    受け渡す準備が完了しました。

    それでは、シーン1で「ボタンを押したら、インプットフィールドに入力した文字をDeliverクラスに引き渡す」をやってみましょう。

    [Scene1.cs]
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.UI;

    public class Scene1 : MonoBehaviour {
    public InputField inputField;

    public void OnClickButton() {
    // DeliverClassを取得
    DeliverClass deliver = FindObjectOfType<DeliverClass>();
    // InputFieldの文字列をDeliverに渡す
    deliver.deliverString = inputField.text;
    // シーンを20190304_02に移動
    SceneManager.LoadScene("20190304_02");
    }
    }


    ボタンを押した時にOnClickButtonが呼ばれるようにしておきましょう。

    これで、InputFieldに文字を入力したものが、DeliverClassのdeliverStringに入り、次のシーンに持ち越すことができます。

    それでは、シーン2の方のコードも書いてみましょう。

    [Scene2.cs]
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.UI;

    public class Scene2 : MonoBehaviour
    {
    public Text txtString;

    private void Start() {
    // DeliverClassを取得
    DeliverClass deliver = FindObjectOfType<DeliverClass>();

    // DeliverClassから文字列を取得し、セット
    txtString.text = deliver.deliverString;
    }

    public void OnClickBackButton() {
    SceneManager.LoadScene("20190304_01");
    }
    }


    シーン2の方では、Startの中でDeliverClassから値を持ってきて、Textにセットすることをしています。

    実際に実行すると、DeliverのオブジェクトがDontDestroyOnLoadのところにあるのが確認できると思います。



    これが「シーンが変わっても消えないオブジェクト」になります。

    これで、シーン1のInputFieldの値をシーン2に引き渡すことができます。

    ってことで、簡単かつ基本的なことでしたが、誰かの役に立てば幸い・・・・
    あでゅ~ノシ

    Category: 開発日記(Unity)

    Thread: プログラミング

    Janre: コンピュータ

    Tag: Unity  ゲーム開発  C#  シーン  Scene  シーン間   
    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/582-d8a9f811
    この記事にトラックバックする(FC2ブログユーザー)