<実現したいこと>
float型をTextに表示させたいのですが、そのまま指定してしまうとバーチャルスタジオの方でエラーが出てしまいます。
<エラーコード>
型 'float'を型 'string'に暗黙的に変換できません
<ソースコード>
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class GameScript : MonoBehaviour 7{ 8 public float longTapTime=2.0f; 9 float nowTapTime; 10 float safeTime=1.0f; 11 bool isLongtap; 12 bool isLongtapclear; 13 int level; 14 public Text countText; 15 public Text Text1; 16 public Text Text2; 17 public string count; 18 bool startflag=false; 19 // Start is called before the first frame update 20 void Start() 21 { 22 level = PlayerPrefs.GetInt("level"); 23 kabe(); 24 count3(); 25 } 26 27 // Update is called once per frame 28 void Update() 29 { 30 if (startflag) 31 { 32 Text1.text = longTapTime; 33 if (Input.GetMouseButton(0)) 34 { 35 nowTapTime += Time.deltaTime; // 秒数をカウント 36 37 // タップし続けた時間が規定値を超えたらロングタップとして扱う 38 if (nowTapTime >= longTapTime && !isLongtap) 39 { 40 StartCoroutine("WaitASecond"); 41 nowTapTime = 0; // タイマーリセット 42 isLongtap = true; // ロングタップしたフラグを立てる // Prefabの作成 43 Debug.Log("Long Tap"); 44 } 45 46 } 47 else if (Input.GetMouseButtonUp(0)) 48 { 49 // クリックを終えたら初期化 50 nowTapTime = 0; 51 isLongtap = false; 52 } 53 } 54 } 55 public void kabe() 56 { 57 safeTime = 1.0f / (level + 1.0f); 58 safeTime *= 3.0f; 59 Debug.Log(safeTime); 60 } 61 public void count3() 62 { 63 count = "3"; 64 countText.text = count; 65 Invoke("count2", 1); 66 } 67 public void count2() 68 { 69 count = "2"; 70 countText.text = count; 71 Invoke("count1", 1); 72 } 73 public void count1() 74 { 75 count = "1"; 76 countText.text = count; 77 Invoke("start", 1); 78 } 79 public void start() 80 { 81 count = "start!"; 82 countText.text = count; 83 Invoke("startsetting", 1); 84 } 85 public void startsetting() 86 { 87 startflag = true; 88 89 } 90 IEnumerator WaitASecond() 91 { 92 yield return new WaitForSeconds(1f); 93 float diff = longTapTime - nowTapTime; 94 if(diff<0) 95 { 96 diff *= -1; 97 } 98 if(diff<safeTime) 99 { 100 101 } 102 print((longTapTime - safeTime < nowTapTime) + " : " + (longTapTime + safeTime > nowTapTime) + " : " + !isLongtapclear); 103 if ((longTapTime - safeTime < nowTapTime) 104 && (longTapTime + safeTime > nowTapTime)&&!isLongtapclear) 105 { 106 isLongtapclear = true; 107 Debug.Log("tapclear!"); 108 nowTapTime = Random.Range(2,6); 109 } 110 else 111 { 112 Debug.Log("OUT"); 113 } 114 } 115} 116
<試したこと>
string型を作って、その代入する方法はやってみましたが、同じようなエラーが出ています。
unityに詳しい方、ご回答お願いします。
普通にキャストすればいいのでは?
それは回答でお願いします????
なぜ、こんなに長時間解決できないんでしょう?
どこに問題があるか示せますか?
> string型を作って、その代入する方法はやってみましたが、同じようなエラーが出ています。
情報があいまいすぎるので、はっきりしない限り回答者は具体的な回答ができません。
みつけた正しい方法で同じエラーが出るなら、こちらの示す回答でも同じ結果になると思います。
とりあえず ToString() を試していないならやってみてください。
調べてやってみたのならそのやってみたソースコードを貼ってください。
質問は編集できます。
<試したこと>に追記してください。
okです
NG です。
なんですか
繰り返した方がいいですか?
okですといったときにNGですと言ったので何だろうと思ったので
>調べてやってみたのならそのやってみたソースコードを貼ってください。
ozraruさんの回答でコメントしたのですが、その件を見ていないなら見てほしいです。一応最初に出てきたサイトを参考にしたのですが、float→stringができないということでした。(ozraruさんの質問にも書きました)どのサイトを言いたいのか教えてください。検索結果だけだとどのサイトか迷ってしまう可能性があるので、できればサイトのリンクを貼ってほしいです。
他の回答者さんの通り「C# float 文字列変換」や「C# float string 変換」で出てくるサイトであれば、(上位であれば)どのようなサイトを見ても出来るような内容です。
迷うのであれば、どれか一つのサイトに絞ればいいだけの話です。
むしろ、あなたが参考にしているサイトを提示したほうがよろしいかと思います。
どのサイトを見ていないのであれば、あるいは内容を理解しようとしていないのであれば、それは論外です。
okですと言う割にozraruさんが要請する試したコードすら記載しないのは全然okではないです。
言われた事はせめてその文章通りキッチリおこなうようお願いします。
回答者に対して失礼です。
ちなみにその最初に出てきたサイトには文字列をfloatに変換する説明もあり試してみましたが問題となっている箇所は問題無く直せました。
誰も指摘されていない(<恐らくそれどころではない)ので一応しますが、Unityは関係無く、C#の問題です。あと、「バーチャルスタジオ」ではなく多分、「Visual Studio(ビジュアルスタジオ)」です。
回答4件
あなたの回答
tips
プレビュー