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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

2回答

838閲覧

;のエラーと出ますが;を付けても解決しません

sion1111

総合スコア2

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2022/12/30 22:52

前提

音楽ゲームのリザルト画面を作っています。
Scoreの値が80以上でGood、60以下でBadと画像を表示させたいです。
現在エラーでセミコロンが足りないと出ます。
セミコロンを入れるように指示された場所の意味が分からず教えて頂きたいです。
調べたところ、単純な文法エラーでもこれが出るらしいのですが、初心者なので分からず困っています。

実現したいこと

エラーを取り除き、if文を機能させたいです。

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

Assets\Script\Scoretext.cs(47,27): error CS1002: ; expected

該当のソースコード

C#

1using System; 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.UI; 6using TMPro; 7 8public GameObject Good; 9public GameObject Bad; 10 11public class Scoretext : MonoBehaviour 12{ 13 //スコア加算したいtextと紐付ける 14 public float Score; 15 public TextMeshProUGUI scorecounttext; 16 int Score = 0; 17 18 //Scoretextにアクセスして実行する 19 internal static void SetScoretext() 20 { 21 throw new NotImplementedException(); 22 } 23 24 // Start is called before the first frame update 25 void Start() 26 { 27 //0からスタートする 28 Score = 0; 29 //オブジェクトを非アクティブにする 30 this.gameObject.SetActive(false); 31 //96秒後にOpen関数を実行する 32 Invoke("Open", 20); 33 } 34 35 // Update is called once per frame 36 void Update() 37 { 38 //textのフォーマットを設定する 39 scorecounttext.text = string.Format("{0}", Score); 40 41 if (Score >= 80) 42 { 43 Good.GetComponent<Image>(); 44 Good.SetActive(true); 45 } 46 47 else (Score <= 60) 48 { 49 Bad.GetComponent<Image>(); 50 Bad.SetActive(true); 51 } 52 53 } 54 55 void Open() 56 { 57 //オブジェクトをアクティブにする 58 this.gameObject.SetActive(true); 59 } 60}

試したこと

if文の表記が間違えているのかと思い調べましたが分かりませんでした。
スクリプトを何度書き直してもif文の部分のみにエラーが出ます。

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

Unity 2021.3.14f1
Visual Studio 2019

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

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

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

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

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

guest

回答2

0

else (Score <= 60)

これ、まちがってます。
なにが駄目なのかわかりますか

投稿2022/12/30 22:56

y_waiwai

総合スコア87774

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

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

0

ベストアンサー

普通に文法エラーでしょう。

if()
{
}
else if()
{
}
else
{
}
とはなりますが、エラーの出ているところでは、
elseのあとにifがなく、条件式らしきモノがあります。

ifは書かれていないので、
(Score <= 60)は、(Score >= 80)が否だったときに『実行する文(つまり、命令)』ですから、セミコロンは必要でしょう。
その後の{}は局所ブロックとして判断されます。

ということで、『if』の書き忘れなだけかと。

投稿2022/12/30 23:01

setoppu

総合スコア292

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

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

退会済みユーザー

退会済みユーザー

2022/12/31 00:38 編集

必ずしも、 > if() > { > } > else if() > { > } > else > { > } である必要はないです。初学者にそう書くと絶対そういうパターンにしなければならないと思うかも。
sion1111

2022/12/30 23:25

ありがとうございます。 else if()にしてみたところエラーが無くなりました! else()は使えないと初めて知りました! 勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問