yuta_san0629
@yuta_san0629 (蜜柑 猫)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Unityを起動した瞬間にエラーが常駐している

Unityでゲームを作るためC#を学んでます

初めて初日です。どうかお手柔らかにお願いします。

https://youtu.be/ONW2mg_n6Xw?si=Fa0UnGBploS8LRjZ
↑こちらを参考にして、Unityを用いたscriptを練習しているのですが早くも『変数』の部分で躓いております。

1:All compiler errors have to be fixed before you can enter playmode
2:error CS0104: 'Debug' is an ambiguous reference between 'UnityEngine.Debug' and 'System.Diagnostics.Debug'

というよくわからないエラーが出ております。

https://qiita.com/umino_mizu/items/2b92bdc23cbafc26999d
https://digilab.tech/unity-input-system-%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E3%81%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E3%81%A7%E3%82%8B/

↑上記を参考に2番の方は記事の通り『Reimportall』したのですが。治ってるのかもわからないままです。

スクリーンショット 2024-05-29 122501.png
↑セーフモードでのスクショ

スクリーンショット 2024-05-29 122546.png
役に立つかわかりませんが、一応VSのスクショも貼っておきます。

0

2Answer

VisualStudioは、エラー一覧の行選んでF1キー押すか、エラーコードクリックしたら、エラーコードについて詳しい説明があるWebページを開いてくれます。
英語のページが出てくるかもしれませんが、ブラウザの翻訳機能使うか、下の球みたいなアイコンクリックすると言語切り替えできます。
アイコン

あいまいな参照は、使用している名前空間の中でクラス名が同一のものが複数ある場合に発生するので、その場合、名前空間名から記述する必要があります。

そもそも質問文で参考にしたというリンク先は、VisualStudioの画面ではないように見えますが。Unity触ったことありませんが、Unityエディターってやつですかね。開発環境やエラーコードが違えば、対処方法も変わってくると思いますので、自分のエラーにマッチする記事かどうかもよくわからずに適当に記事の通りやっても、解決できないと思いますよ。

始めたばかりであれば、本買ったりしてもう少し段階を踏んで勉強した方がいいと思いますよ。他人に聞いてそのエラーを解消したとしても、自分で調べて理解するという工程をすっ飛ばし続けていれば、すぐ行き詰まると思います。

5Like

Comments

  1. @yuta_san0629

    Questioner

    めっちゃ助かります。
    勉強不足で初歩の初歩で身に着けるべきなんでしょうけど、エラーコードについては初めて知りました。
    ググっても何が適切なのかも分からない中、時間だけが過ぎていくのが結構ストレスで工程をすっ飛ばしがちになってしまうのは確かにあります……めっちゃ反省です。
    参考書に関して、C#の初歩や基礎を頭にたたき込むのであれば、2019年とかひと昔前のものでもいいのでしょうか。それともできれば最新版の方が良いのでしょうか。
    新品だと地味に高く中古屋で探してみようかと思ったので。

  2. 基本的な文法を学ぶのであれば多少古くても問題はないのですが、C#はバージョンアップの激しい言語でもあり、新しくなるほど文法が簡略化されたり、機能追加されたりしているので、新しいに越したことはないです。
    可能であれば、大きい本屋などで実際に手に取ってパラパラ読んでみて、自分に合いそうなものを選べればベストです。

  3. @yuta_san0629

    Questioner

    ありがとうございます!明日書店に行ってきます

1:All compiler errors have to be fixed before you can enter playmode
これはコードにエラーが残っているとプログラムを動かせませんよ、と言ってるだけです。ではなにがエラーかというと、2つめのスクショの18行目で
Debug.Log(x);
という部分のDebugの下に赤い波線が表示されています。これはVisual Studioがこの部分にエラーが残っていますよ、と教えてくれてるわけです。
そしてこの行の何が悪いのかというのが次のメッセージに書いてあります。

2:error CS0104: 'Debug' is an ambiguous reference between 'UnityEngine.Debug' and 'System.Diagnostics.Debug'
これは、単にDebugと書かれてもUnityEngineで定義されてるDebugなのかSystem.Diagnosticsで定義されてるDebugなのかわからないよ、ということを言ってます。Unity内のコンソールでHello Worldを表示したいならUnityEngine.Debugを、そうでないならSystemの方を使えばいいでしょう。

解決法としては、コード内3行目のusing System.Diagnostics;を消すか、18行目をUnityEngine.Debug.Log(x);とすれば動くと思います。

これは単なるお節介ですが、エラーメッセージを読んで内容を考える習慣をつけたほうがいいと思います。英語がわからない場合は適当な翻訳サイトに突っ込んでみましょう。わからない用語がある場合はググってみましょう。エラーの内容は大体わかるけど解決方法がわからない、という段階になったらエラーメッセージそのものでググり、それでもダメなら質問サイトを使うといいと思います。

5Like

Comments

  1. @yuta_san0629

    Questioner

    ありがとうございます!ちょっと試してみます
    細々としてて何から調べていいかもわからず途方もないのでついつい質問してしまうので、頑張ります

  2. @yuta_san0629

    Questioner

    エラーが消えました!!やったー!

  3. 解決したのであれば、本問をクローズしましょう。

Your answer might help someone💌