質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

668閲覧

UnityでSceneを行き来する際、変数を共有してTextの値を更新したい

fdorike

総合スコア21

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/10/14 03:06

:実現したいこと
変数に数字の値をいれてTextに反映します。今現在textに1という数字を表示しています。別のSceneに移動してtext+1をして元のSceneに戻ってきたときに2という数字を表示したいです。今自分でいろいろ試した結果のスクリプトを貼り付けました。
:エラー。
プログラムにエラーはありません。ただプログラム的に間違っているだけだと思います。元のSceneでTextに1と表示されていて別のSceneに移った時に変数を2にして元のSceneに戻ったときにTextに2と表示されるプログラムの書き方がわからないのでプログラムの書き方を教えてください。下は自分なりに書いたプログラムですので気にしないでください。
:スクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Main : MonoBehaviour
{
public static int text = 1;
public Text scoreText;
public static int GetText ()
{
return text;
}
// Use this for initialization
void Start()
{
Invoke("Scene", 3.5f);
}
// Update is called once per frame
void Update()
{
scoreText.text = "Stage:" + text.ToString();
}
void Scene()
{
if (text == 1)
SceneManager.LoadScene("Game6")

{
SceneManager.LoadScene("Game6");
}
}
2つめのText
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Game6 : MonoBehaviour {
void Start()
{
int game6Text = Main.GetText();
game6Text += 1;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

現状このソースコードで、Textが2にならないということでよろしいでしょうか?

そうだという認識でお答えすると、

public class Main : MonoBehaviour { public static int text = 1; public Text scoreText; public static int GetText () { return text; } public static void SetText(int Text) { this.Text = Text } } public class Game6 : MonoBehaviour { void Start() { int game6Text = Main.GetText(); game6Text += 1; Main.SetText(game6Text); }

でいけるのではないでしょうか。

最初の行きは無事に値を渡せていると思いますが、帰りの分の値を受け渡しが存在していません。
なので、その帰りを受け取るための関数をMainに。
そして帰りの分を渡すためのコードを追加しました。

投稿2018/10/14 03:24

TomoG12

総合スコア299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fdorike

2018/10/14 05:57

無事解決することができました。ありがとうございます。SetTextの内容がGame6でのgame6textがMainではTextに変換されてるってことですか?
TomoG12

2018/10/14 07:50

変換とは少し意味合いが違います。 SetTextでやっていることは、引数をTextに入れるということだけです。 なので、変換というより、データの受け渡しという方がより意味は近いと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問