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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

2回答

1300閲覧

inputFieldで入力したStringをFloatに変換してPlayerPrefのfloatで保存しようとしたときにエラーが出てしまう。

OGR_toast

総合スコア16

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2018/02/25 05:40

ゲームの設定画面を作っているのですが入力された値をfloatに変換して保存することげできません。
下の関数はinput fieldのOn End Edit(string)で呼び出しているセーブ用の関数です。
StringからFloatに変換しているはずなのですがなぜかエラーが起きてしまいます。

C#

1public void SJudgeDistance(string input){ 2 3 PlayerPrefs.SetFloat ("JudgeDistance",float.Parse(input)); 4 5 Now = PlayerPrefs.GetFloat ("JudgeDistance",10f).ToString(); 6 7 }

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

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

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

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

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

fiveHundred

2018/02/25 07:30

エラーが出ているのであれば、そのエラーを記載してください。
OGR_toast

2018/02/25 07:37 編集

FormatException: Invalid format. System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Double.cs:209) System.Single.Parse (System.String s) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Single.cs:183) SaveJudgeDistanceSetting.SJudgeDistance (System.String input) (at Assets/Script/SaveJudgeDistanceSetting.cs:24) UnityEngine.Events.InvokableCall`1[System.String].Invoke (System.String args0) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:206) UnityEngine.Events.CachedInvokableCall`1[System.String].Invoke (System.String arg0) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:349) UnityEngine.Events.UnityEvent`1[T0].Invoke (.T0 arg0) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_1.cs:58) UnityEngine.UI.InputField.SendOnSubmit () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/InputField.cs:1582) UnityEngine.UI.InputField.DeactivateInputField () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/InputField.cs:2306) UnityEngine.UI.InputField.OnUpdateSelected (UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/InputField.cs:1254) UnityEngine.EventSystems.ExecuteEvents.Execute (IUpdateSelectedHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:99) UnityEngine.EventSystems.ExecuteEvents.Execute[IUpdateSelectedHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update() こんな感じのエラーが出て強制的に一時停止になります。
guest

回答2

0

自己解決

inputdieldの中のプログラム名.SJudgeDistance(string)をプログラム名.SJudgeDistanceに変えるこで解決しました。
プログラム名.SJudgeDistance(string)とプログラム名.SJudgeDistanceの違いは何なんでしょうか?

投稿2018/02/25 11:17

OGR_toast

総合スコア16

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

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

fiveHundred

2018/02/25 11:30

前者ではInspector上で引数に渡す値を指定することができます。 そのため、InputFieldに入力された内容ではなく、そのInspector上の値(何も指定していなければ空の文字列)が渡されたのだと思います。
guest

0

これはfloat.Parse(input)で、inputの内容が正しくない(floatに変換できない内容になっている)というエラーだと思われます。
inputの文字列が意図しているものかどうかを、Debug.Log()などで確認してください。

投稿2018/02/25 08:51

fiveHundred

総合スコア9774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問