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

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

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

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

Unity

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

Q&A

解決済

1回答

28513閲覧

[Unity] error CS0101が出ます、解決法をご指南ください。

momoneko

総合スコア20

C#

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

Unity

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

0グッド

1クリップ

投稿2019/04/29 20:14

前提・実現したいこと

Unity のアセットストアでテンプレートのプロジェクトをDLしました。
インポートした後、error CS0101が出るようになりました。
ネットで検索していくつかの方法を試したのですが、解決しません。
どうか解決法をご指南ください。

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

Assets/プロジェクト名(個別のアセット名なので書かないでおきます。)/Scripts/GameController.cs(17,14): error CS0101: The namespace `global::' already contains a definition for `GameController'

該当のソースコード

c#です。
以下、エラーメッセージのダブルクリックでVisual Studioで開いた部分のコピーです。

public class GameController : MonoBehaviour {

public GameObject coinPrefab; [Range(0,100)] public int chanceForCoin = 10; Text scoreText; //text displayed in 'Score' field to 'Main Canvas' Text coinsText; int score; int coins; public GameObject gameOverScreen; public Text finalScoreText; [HideInInspector] public bool gameIsActive; public static GameController instance; //static reference for access from other classes

イメージ説明

試したこと

ネットで調べて試したのは、

1、同じ名前のファイルがあるからエラーが起こるので、ファイル名を変えるといい > 変えたらもっとエラーが出たので戻しました。

2、このファイルのせいでコンパイルが停止しているので、一度別のフォルダに移動してからコンパイルし直すといい > ファイルが無いとのエラーが出るようになったので戻しました。

3、同じ名前のファイルが同フォルダー内に2つあるのでフォルダーを作って該当ファイルを入れるといい > このフォルダにこの名前のファイルは一つしかありません。

ちなみにファイル構造は、Asset/プロジェクト名/Scripts/GameController.csとなっています。

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

Unityのバージョンは2018.3.12f1(64bit)です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

同じ名前の ファイル(GameController.cs) ではなく、同じ名前の 定義(GameController) が同一namespaceに存在しているというエラーです。
ありきたりな名前なので例えば複数のアセットを入れてそれぞれがGameControllerを定義しているとかが考えられます。(しかもnamespaceを分けずに)

VisualStudioで検索オプションを「すべて検索」にしてGameControllerを検索して、その検索結果に定義が複数出てきたりはしないですか?

投稿2019/04/29 21:17

vo3

総合スコア321

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

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

momoneko

2019/04/29 21:43

今、おっしゃったように検索してみた所、 別のアセットのファイルにこの記述を発見しました。 public class GameController : MonoBehaviour これは別アセットのGameController.cs内にありました。 誠に不勉強で申し訳ないのですが、どのように解決したら良いのかご意見を頂けたらと思います。 お願いいたします。
vo3

2019/04/29 23:27

それぞれのアセットがどのようなものかわかりませんが、そのGameController.csはサンプルとして提供されているとかなのだとしたら、その内容を把握してご自分で別のものを作成する前提の可能性があります。 テンプレートのプロジェクトと書かれているのでほぼそうだと思います。おそらくそれぞれのアセットの胆となる部分はGameControllerではなく別のリソースやスクリプトでしょう。 または、実は既に導入済みのアセットが「今回の」テンプレートプロジェクトを利用して作成されたものといった可能性もあります。 その場合は当然重複なので、テンプレートプロジェクトが不要になるだけです。 # テンプレートはあくまでテンプレートですし とりあえずの回避をするとしたらですが、それぞれのGameController.csが ・全く同じ -> どちらかをすべてコメントアウトや削除する ・若干違う -> どちらかに差分を集約し、他方をすべてコメントアウトや削除する ぐらいです。 # MonoBehaviourなのでどこかのPrefabやSceneに割り付けられているから単純にはできないでしょうが... まずは確認というのであれば、別のプロジェクトを作ってそこで動作を確認してから必要なものだけを本プロジェクトにインポートするのがいいと思います。 現在の情報ではそれぐらいです。
momoneko

2019/04/30 19:16

解決しました。 ご意見の通り、テンプレート内のGamecontrollerはサンプルで、設定を正しく終了すれば重複しないようになるように作られていたのですが、当方が使用しない部分であったため、設定を完全に終了していない部分でエラーが発生してしまっていたようです。検索して発見した他アセット記述がその原因でした。 わかりやすいご説明で思い違いも正せ、解決できました。 ありがとうございました。
yuzu1

2020/12/22 17:46

他のアセット内に同じ名前の定義があるだけでエラーが起こるということですか?学習のためにできたら知りたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問