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

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

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

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

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Unity

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

Q&A

解決済

2回答

2116閲覧

ArgumentException: method return type is incompatible エラー

hm08103

総合スコア10

C#

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

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Unity

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

0グッド

0クリップ

投稿2021/04/09 16:43

前提・実現したいこと

Unityでinputfieldの値を取得してほかのメソッドに渡そうとしています。
値を取得時にinputfieldの値をint型に変換して、returnで返したいです。

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

ArgumentException: method return type is incompatible

該当のソースコード

C#

1 int bombValue; 2 InputField inputField; 3 4 public int BombCustom(){ 5 bombValue = int.Parse(inputField.text); 6 return bombValue; 7 }

試したこと

戻り値に互換性がないエラーとのことですが、
メソッド内でint型に変換しているのになぜ?という状況です。
もともとはreturnでなく、voidのまま試行していましたが、
それだとbombValueの値が該当メソッド外ではinputFieldの値ではなくなってしまったため、
返り値として扱う必要有と判断していますが、そもそもの考え方がおかしいのでしょうか。

補足情報(FW/ツールのバージョンなど)

Unity 2020.2.5f1
VScode 1.55.1

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

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

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

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

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

Hey_CH

2021/04/11 01:35

Unity触ったことないんでよくわからないのですが、以下の症状とは違うのでしょうか? https://teratail.com/questions/291390 OnEndEditに登録したとき(void)からintに変えたのが原因では? じゃぁどうすれば該当メソッド外でinputFieldの値を使えるの?という問題はわかりませんw
hm08103

2021/04/11 14:47

コメントありがとうございます。 実はこちらに質問前に、そちらの内容を確認して対応したのですが 解決しなかったでした。 ただ、本日に別の手法で解決ができました。 (なんとも初心者らしいポカミスでしたが...) ありがとうございます!
Hey_CH

2021/04/12 01:57

解決したのであれば、解決した方法をかいてクローズしてください。
guest

回答2

0

自己解決

コメント、返信ありがとうございます。
逐一でDebug.logしていましたが、やはり解決しなかったため
いろいろとwebを見ていたところ、下記サイトの手法で解決をしました。

https://freesworder.net/unity-inputfield/

自身の質問時の情報が少ないことが悪く、
さかのぼってみてwebと自分のscriptを比較した所、
startの時点でinputfieldコンポーネントの取得方法自体が誤っていたことが判明。

× inputField = GetComponent<InputField>();
〇 inputField = GameObject.Find("InputFieldBomb").GetComponent<InputField>();

こうしないと、スクリプトからオブジェクトに接続がうまくできておらず、
エラーになっていたのだと判断します。

長いスクリプトは読みにくく、回答いただく方にも解読に時間かかるだろうと
省略したことが仇となっていました。
不足した情報の中でお時間割かせてしまって、大変失礼致しました。

投稿2021/04/12 07:06

hm08103

総合スコア10

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

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

0

それは実行時に出た例外です

bombValue = int.Parse(inputField.text);

inputField.textに数字以外の文字が混じってる、あるいは空かなんかなんでしょう。

投稿2021/04/10 00:22

y_waiwai

総合スコア88042

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

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

hm08103

2021/04/10 13:57

回答ありがとうございます。 コンソールで取得してるのですが、入力数値以外の情報は見て取れません。 ただ、ご教示いただいた内容から想定すると 現状はinputFieldコンポーネントでOnEndEditで値を取得して変数を更新、 他にヒエラルキー内においてあるButtonのOnClickで取得した値を 他のメソッドに反映させる動かし方をしているのですが、 OnEndEditでinputField.textを取得し終わってしまい、 OnClick動作時にはリセットがかかって(?)空白になったりしているのかなと仮説を立ててみました。 もう少し試してみたいと思います。。。
y_waiwai

2021/04/10 22:11

そこで実行を止めて、inputField.textの値をみてみたらどうです? 難しい理屈をこねくり回さないで済むと思いますが
hm08103

2021/04/11 14:54

コメントありがとうございます。 逐一でDebug.logしていましたが、やはり解決しなかったため いろいろとwebを見ていたところ、下記サイトの手法で解決をしました。 https://freesworder.net/unity-inputfield/ 自身の質問時の情報が少ないことが悪く、 さかのぼってみてwebと自分のscriptを比較した所、 startの時点でinputfieldコンポーネントの取得方法自体が誤っていたことが判明。 × inputField = GetComponent<InputField>(); 〇 inputField = GameObject.Find("InputFieldBomb").GetComponent<InputField>(); こうしないと、スクリプトからオブジェクトに接続がうまくできておらず、 エラーになっていたのだと判断します。 長いスクリプトは読みにくく、回答いただく方にも解読に時間かかるだろうと 省略したことが仇となっていました。 不足した情報の中でお時間割かせてしまって、大変失礼致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問