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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

Unityで敵から逃げた時間を別のシーンで表示するにはどうすればいいでしょうか?

colors
colors

総合スコア13

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0評価

1クリップ

251閲覧

投稿2019/04/22 15:47

前提・実現したいこと

UnityでC#を使ってResultシーンのTextにMainシーンの結果を表示したいです。敵から何秒逃げれるか、というゲームを作っていて、敵に捕まってしまったらResultシーンに移動して逃げた秒数をResultにTextで表示したいです。すでにMainの画面でストップウォッチの機能とResultシーンに移動するスクリプトはできているので、捕まった時の時間を表示したいです。
(イメージ)
あなたの記録は(あなたが逃げた時間は)
00 : 00秒です

発生している問題・エラーメッセージ

A field initializer cannot reference the non-static field, method, or property 'WatchTime.seconds' secondsが使えない、というのはわかるのですがseconds以外で結果を表すにはどうしたらいいのでしょうか? 下のスクリプトだと、ResultのTextにはScore: 0 という表示になってしまいます

該当のソースコード

C#

//WatchTime using UnityEngine; using System.Collections; using UnityEngine.UI; public class WatchTime : MonoBehaviour { [SerializeField] public static int minute; [SerializeField] private float seconds; // 前のUpdateの時の秒数 private float oldSeconds; // タイマー表示用テキスト private Text timerText; public static int score = seconds; public static int getScore() { return score; } void Start () { minute = 0; seconds = 0f; oldSeconds = 0f; timerText = GetComponentInChildren<Text> (); } void Update () { seconds += Time.deltaTime; if(seconds >= 60f) { minute++; seconds = seconds - 60; } // 値が変わった時だけテキストUIを更新 if((int)seconds != (int)oldSeconds) { timerText.text = minute.ToString("00") + ":" + ((int) seconds).ToString ("00"); } oldSeconds = seconds; } }

C#

//Score Manager using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; // 追加 public class ScoreManager : MonoBehaviour { public GameObject score_object = null; // Textオブジェクト public int score_num = 0; //スコア変数 // 初期化 void Start () { //スコアのロード score_num = PlayerPrefs.GetInt("Score", 0); } //削除時の処理 void OnDestroy() { //スコアを保存 PlayerPrefs.SetInt("Score", score_num); PlayerPrefs.Save (); } // 更新 void Update () { // オブジェクトからTextコンポーネントを取得 Text score_text = score_object.GetComponent<Text> (); // テキストの表示を入れ替える score_text.text = "Score:" + score_num; } }

試したこと

シーン間で共有するためにstatic int scoreをseconds以外にしてもダメでした。
またWatchTimeをtextに埋め込んだりしてもただのストップウォッチがresultに表示されるだけでした。
リンク
こちらの記事の
public int score = 0;

void Awake() { score = 30; }

という部分のscoreを何にすればいいのかがわかりませんでした。

補足情報

使用端末 MacBookAir Unity 2018.1.0f2

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Ajai

2019/04/22 17:55

1. 間にほかの変数を噛ませないで読み込ませてみてください。 2. 単純なif文でも思わぬ事故が起きていたりしますから、無条件でテキストを更新するようにもしてください。 3. 秒=スコアではなく、秒&スコアというように考えたほうがこんがらがらずに済むかと思います。ScoreとResultSecondのように、分けて記録するのもテです。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。