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

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

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

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

Q&A

2回答

6957閲覧

Cannot implicitly convert type `int' to `bool'というエラーが出てるのですが、、、、、、

takayakana

総合スコア10

Unity

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

0グッド

0クリップ

投稿2018/11/25 08:59

前提・実現したいこと

Cannot implicitly convert type int' to bool'というエラーが出てるのですがエラー
を直したいです
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
Unityで『sucoaが13になったとき、clearと表示する』システムを作っているのですが
そのプログラムを書いたところエラーが発生しました。(30行目)

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

Cannot implicitly convert type int' to bool'

エラーメッセージ Cannot implicitly convert type `int' to `bool'

該当のソースコード

ソースコード using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Santa : MonoBehaviour { float Sucoa; public Text sampleText; int sucoa; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetKey (KeyCode.W)) { transform.Translate (0f, 0f, 5f * Time.deltaTime); } if (Input.GetKey (KeyCode.S)) { transform.Translate (0f, 0f, -5f * Time.deltaTime); } if (Input.GetKey (KeyCode.A)) { transform.Rotate (0f,-15f * Time.deltaTime, 0f); } if (Input.GetKey (KeyCode.D)) { transform.Rotate (0f, 15f * Time.deltaTime, 0f); } sampleText.text = "sucoa"; if (sucoa = 13){ sampleText.text = "Clear"; } } void OnCollisiEnter (Collision col){ if (col.gameObject.name == "PresentBox(1)") { Sucoa++; } if (col.gameObject.name == "PresentBox(2)") { Sucoa++; } if (col.gameObject.name == "PresentBox(3)") { Sucoa++; } if (col.gameObject.name == "PresentBox(4)") { Sucoa++; } if (col.gameObject.name == "PresentBox(5)") { Sucoa++; } if (col.gameObject.name == "PresentBox(6)") { Sucoa++; } if (col.gameObject.name == "PresentBox(7)") { Sucoa++; } if (col.gameObject.name == "PresentBox(8)") { Sucoa++; } if (col.gameObject.name == "PresentBox(9)") { Sucoa++; } if (col.gameObject.name == "PresentBox(10)") { Sucoa++; } } }

試したこと

色々と変数を変えたのですがエラーが発生しました

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

MonoDeveop Version 5.9.6
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

MonoDevelopを使ったことが無いので、どういう風にエラーが表示されるのかわかりませんが
こういう場合何行目にエラーが出ているのかぐらいは書いてください

あと人に質問するのですから、質問文はちゃんと確認してから投稿しましょう
「CakePHPでUnity???」と一瞬脳が硬直してしまいました

void Update () { if (Input.GetKey (KeyCode.W)) { transform.Translate (0f, 0f, 5f * Time.deltaTime); } if (Input.GetKey (KeyCode.S)) { transform.Translate (0f, 0f, -5f * Time.deltaTime); } if (Input.GetKey (KeyCode.A)) { transform.Rotate (0f,-15f * Time.deltaTime, 0f); } if (Input.GetKey (KeyCode.D)) { transform.Rotate (0f, 15f * Time.deltaTime, 0f); } sampleText.text = "sucoa"; if (sucoa = 13){ //←ここ sampleText.text = "Clear"; } }

この場合おそらくif(sucoa = 13)が原因です。単純な構文ミスですね

元の意図は違うと思いますがsucoaに13を代入しそれをif構文が真偽判定を行うというコードになっています。一応意味は通りますがC#ではIDEに拒否される構文です。基本的にifのカッコ内にbool以外入れるなという感じです

if(sucoa == 13)になおせばsucoaが13の場合trueを返すというコードになるのでこれでおそらく大丈夫です

ちなみに

int hoge = 1; if(hoge){ //処理 }

int hoge = 1; if(!hoge){ //処理 }

が通るプログラミング言語も多くこの場合hogeが0かどうかを判定する物になりますが、C#はこういう暗黙的なコードを嫌っているのでIDE側で拒否する仕様になっています(IDE側の設定で通ったような記憶がありますがよく覚えていません)

投稿2018/11/25 09:18

編集2018/11/25 09:26
DeadEndShoot666

総合スコア203

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

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

0

if (sucoa = 13){
sampleText.text = "Clear";
}

こちら、if(sucoa == 13){ (ダブルイコール)ではありませんか?

投稿2018/11/25 09:15

yuuyu

総合スコア1135

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問