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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

解決済

1回答

1066閲覧

別ファイルからテキスト情報を取得したい!

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2020/05/18 10:47

●実現したいこと
別シーンからテキスト情報を取得したいです。

●作成しているゲーム
下の画像のような2Dゲームを作成しております。
1枚目:Stage1
2枚目:ClearScene

イメージ説明
イメージ説明

●具体的にしたいこと
写真1枚目Stage1シーンにてクリアした時に画面右上にクリアタイムが表示されます。
そのクリアタイムを写真2枚目の”残りタイム◯◯秒でした。”に数値を入れたいです。

●現在やっていること
テキスト情報を取得してスクリプトからテキストを操作することはできました。
写真1枚目のカウントダウン機能をTimeScript.csというファイルで管理しているので
おそらくそちらから値を引っ張ってくるのですがうまくできません。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class ClearSceneManager : MonoBehaviour 7{ 8 //テキスト情報の取得 9 public GameObject scoreText; 10 11 public void Update() 12 { 13 // オブジェクトからTextコンポーネントを取得 14 Text score_text = scoreText.GetComponent<Text>(); 15 // テキストの表示を入れ替える 16 score_text.text = "残りタイム5秒でクリアしました"; 17 } 18} 19

●TimeScript

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6 7 8public class TimeScript : MonoBehaviour 9{ 10 //時間制限 11 public float time = 60; 12 //タイトルに戻るボタンの配置 13 public GameObject backToTitleButton; 14 //コンティニューボタンの配置 15 public GameObject continueButton; 16 //ゲームオーバーテキストの配置 17 public GameObject gameOverText; 18 //爆発エフェクトの配置 19 public GameObject explosion; 20 //うんちエフェクトの配置 21 public GameObject unchi; 22 //SEの追加 23 AudioSource audioSource; 24 public AudioClip gameOverSE; 25 //便意Managerを呼び出す 26 public BeniManager beniManager; 27 28 29 void Start() 30 { 31 //初期値60を表示 32 //float型からint型へcastして、string型に変換して表示する 33 GetComponent<Text>().text = ((int)time).ToString(); 34 //ゲームオーバーテキストを非表示にしておく 35 gameOverText.SetActive(false); 36 //コンティニューボタンを非表示に 37 continueButton.SetActive(false); 38 //タイトルに戻るボタンを非表示に 39 backToTitleButton.SetActive(false); 40 //爆発エフェクトを非表示にしておく 41 explosion.SetActive(false); 42 //うんちエフェクトを非表示にしておく 43 unchi.SetActive(false); 44 //SE 45 audioSource = GetComponent<AudioSource>(); 46 47 48 } 49 50 //クリア判定用のフラグを追加 51 public bool isClear = false; 52 //PlayerScriptを読み込む 53 public PlayerManager playerManager; 54 55 56 57 58 void Update() 59 { 60 //フラグが更新された際の処理 61 if (isClear) 62 { 63 return; 64 } 65 66 //1秒に1ずつ減らしていく 67 time -= Time.deltaTime; 68 69 beniManager.UpdateUI(time); 70 71 72 //playerImageタグを取得 73 GameObject playerGameObject = GameObject.Find("Player"); 74 //playerImageタグを取得 75 GameObject playerImageGameObject = GameObject.Find("PlayerImage"); 76 77 if (time <= 0) 78 { 79 //ゲームオーバーテキストを表示する 80 gameOverText.SetActive(true); 81 //コンティニューボタンを表示する 82 continueButton.SetActive(true); 83 //タイトルに戻るボタンを表示する 84 backToTitleButton.SetActive(true); 85 //爆発エフェクトを表示する 86 explosion.SetActive(true); 87 //うんちエフェクトを表示する 88 unchi.SetActive(true); 89 //指定したオブジェクトを破壊 90 Destroy(playerImageGameObject); 91 //gameOverSEの追加 92 audioSource.PlayOneShot(gameOverSE); 93 //playerManagerクラスのフラグを更新する 94 playerManager.isGameOver = true; 95 } 96 97 if (time < 0) time = 0; 98 { 99 GetComponent<Text>().text = ((int)time).ToString(); 100 } 101 } 102 103} 104

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

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

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

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

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

y_waiwai

2020/05/18 10:54

うまくできないとはどうなるんでしょうか
guest

回答1

0

ベストアンサー

time変数を
public static float time = 60;
に変更してはどうですか?

クリアタイムの表示で
score_text.text = "残りタイム" + TimeScript.time.ToString() +"秒でクリアしました";
とすれば、タイムを表示できると思います。

ただし、その場合はTimeScriptのStart()の最初で
time = 60;
という風に必ず初期化する必要があります。

投稿2020/05/18 10:59

mattrick

総合スコア135

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

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

退会済みユーザー

退会済みユーザー

2020/05/18 12:14

ありがとうございました!! できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問