【ハルシオンブログ】Unityでのシーン間のデータの受け渡し…初心に戻ってみました。
花粉が飛び始めた感じですね。
今年もまた多いとか・・・つらい時期が始まりました。坂内っす。
ネタが思いつかないので、初心に戻って「シーンを跨いだデータの渡し方」をやってみましょう。
まずはシーンを2つ用意します。
●シーン1

●シーン2

やることは、「シーン1のインプットフィールドに文字を入力し、ボタンで次のシーン(シーン2)に行って、テキストにシーン1で入力した文字を出力する。」です。
①シーン間で引き継げるクラスとオブジェクトを用意する。
まずは、以下のクラスを作成。
引き継ぎ用クラス
[DeliverClass.cs]
上記クラスをシーン1に置きます。
●シーン1

受け渡す準備が完了しました。
それでは、シーン1で「ボタンを押したら、インプットフィールドに入力した文字をDeliverクラスに引き渡す」をやってみましょう。
[Scene1.cs]
ボタンを押した時にOnClickButtonが呼ばれるようにしておきましょう。
これで、InputFieldに文字を入力したものが、DeliverClassのdeliverStringに入り、次のシーンに持ち越すことができます。
それでは、シーン2の方のコードも書いてみましょう。
[Scene2.cs]
シーン2の方では、Startの中でDeliverClassから値を持ってきて、Textにセットすることをしています。
実際に実行すると、DeliverのオブジェクトがDontDestroyOnLoadのところにあるのが確認できると思います。

これが「シーンが変わっても消えないオブジェクト」になります。
これで、シーン1のInputFieldの値をシーン2に引き渡すことができます。
ってことで、簡単かつ基本的なことでしたが、誰かの役に立てば幸い・・・・
あでゅ~ノシ
今年もまた多いとか・・・つらい時期が始まりました。坂内っす。
ネタが思いつかないので、初心に戻って「シーンを跨いだデータの渡し方」をやってみましょう。
まずはシーンを2つ用意します。
●シーン1

●シーン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に引き渡すことができます。
ってことで、簡単かつ基本的なことでしたが、誰かの役に立てば幸い・・・・
あでゅ~ノシ
« 【ハルシオンブログ】スクリプトをアタッチしたときに特定のコンポーネントを付けたいとき | 【ハルシオンブログ】配列に特定の値を入れて初期化するとき »
コメント
| h o m e |