FC2ブログ
02 «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.31.» 04

ハルシオンシステムの気まま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   

【ハルシオンブログ】int → enum の変換とか最近使ったちょっとしたやつ? 

こんにちは。
大坂です。

今週も木曜日がやってきました。
そして今週もたいして書くことがありません!

ということで最近コーディングで使ったやつ。
相変わらず誰でも知ってそうなのでごまかしていきます(ぁ

とりあえず int → enum の変換について
今までこんな感じでしかできないと思ってたんですが、
enum RARITY {
UR,
SSR,
SR,
R,
N,
}

int num = 3;
RARITY rare = (RARITY)Enum.ToObject(typeof(RARITY), num);


これでもできるんですね。
RARITY rare = (RARITY)num;


なんか結構前にやった時にできなかった気がするけど気がしただけだったのか…。

次、ListのInsert…まぁ普通にあるやつですが最近初めて使いました。
Listの指定した場所に挿入するやつですね。
List blogList = new List();
blogList.Add("aaaa");
blogList.Add("bbbb");
blogList.Insert(1, "cccc");


とかってやると、
aaaa, cccc, bbbb
の順番になる。

リストの長さより長いところに挿入しようとするとエラーになります(当たり前?
List blogList = new List();
blogList.Insert(1, "cccc");



一応こんな感じでやると、ArgumentOutOfRangeExceptionが出ますね。

ということで今週も終わりです。
また~ノシ

Category: 開発日記(Unity)

Thread: プログラミング

Janre: コンピュータ

Tag: Unity  C#   
tb 0 : cm 0