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

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

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

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

Q&A

解決済

1回答

2002閲覧

Unity メッセージウィンドウについて

ssssggg

総合スコア40

C#

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

1グッド

0クリップ

投稿2019/03/04 12:39

C#,Unityで,UIのtextを使ったメッセージウィンドウを作っているのですがうまくいきません。
どう改善すればいいでしょうか?

理想としては、白枠の黒いメッセージウィンドウオブジェクトの中でTextが一文字ずつ自動で入力されていく感じにしたいです。

現時点では、messageメソッドを使用すると元から入力していた文字は消えるものの新しく文字が生成されない状況です。

messageDirector(このスクリプトがアタッチされているオブジェクト)のInspector欄"Messagewindow"にはTextのmassagewinが入っていますがC#スクリプトのInspector欄"Messagewindow"にはTextのmassagewinは入っていません。これかコード、もしくは両方が原因だと思います。

コード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Message : MonoBehaviour {

public GameObject messagewindow = null; void message () { string daihon = "成功しました"; string k = ""; Text messagewin = messagewindow.GetComponent<Text>(); messagewin.text = ""; for (int n = 0; messagewin.text.Length == daihon.Length; n++){ Debug.Log("処理"); k = daihon.Substring(n); messagewin.text += k; } } // Use this for initialization void Start () { message(); } // Update is called once per frame void Update () { }

}

コードの解説
string daihonはTextに最終的に表示したい文字で、そのdaihonの長さとTextの長さが同じになるまで,daihonのn文字目をkに代入しTextにkを足していくスクリプトになっていると信じたいです。

これがおわらないとほとんどゲーム制作が進まないのでどうか改善策をお願いします。

bochan2👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問頂きありがとうございます!
こんな感じでどうでしょうか?

C#

1public class Message : MonoBehaviour { 2 string daihon = "成功しました"; 3 int n=0; 4 float t=0; 5 // Update is called once per frame 6 void Update () { 7 t+=Time.deltaTime; 8 n=Mathf.Floor(t*daihon.Length); 9 string k = daihon.Substring(0,n); 10 Text messagewin = messagewindow.GetComponent<Text>(); 11 messagewin.text = k; 12 } 13}

投稿2019/03/04 13:21

編集2019/03/06 14:05
bochan2

総合スコア2050

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

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

ssssggg

2019/03/04 13:52 編集

早急なご回答ありがとうございました! しかし参考にさせていただいたところ n= Math.Floor(t * daihon.Length);の列で the name "Math" does not exist in the current context とエラーが出たのですがこれはどう対処すればよろしいのでしょうか? 知識不足で自分ではこのエラーを解決できませんでした、すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問