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

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

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

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

Unity

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

Q&A

解決済

1回答

255閲覧

C#×Unity 「2つの引数を取るコンストラクタが含まれない」というエラー

taro_puff

総合スコア1

C#

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

Unity

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

0グッド

0クリップ

投稿2024/09/11 16:03

実現したいこと

Unity学習中にC#のコードを書いていたのですが、ゲームの再生時にコンパイルエラーが発生してしまいます。解決方法が知りたいです。

発生している問題・分からないこと

下記「LearningCurve」スクリプト内に「Weapon huntingBow = new Weapon("Hunting Bow", 105);」の行を追加し、Unityで再生しようとするとコンパイルエラーになってしまいます。
その際Unity内で表示されるエラーは「'Weapon'(構造体の名前) does not contain a constructor that takes 2 arguments」という内容です。
エラーメッセージの内容は理解できたのですが、何度確認しても該当の構造体には2つの引数を定義できているように見えます。

エラーメッセージ

error

1Assets\LearningCurve.cs(32,33): error CS1729: 'Weapon' does not contain a constructor that takes 2 arguments

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Character 6{ 7 public string name; 8 public int exp = 0; 9 10 public Character() 11 { 12 name = "未設定"; 13 } 14 15 public Character(string name) 16 { 17 this.name = name; 18 } 19 20 public void PrintStatsInfo() 21 { 22 Debug.LogFormat("Hero : {0} - {1} EXP", name, exp); 23 } 24} 25 26public struct Weapon 27{ 28 public string name; 29 public int damage; 30 31 public Weapon(string name, int damage) 32 { 33 this.name = name; 34 this.damage = damage; 35 } 36 37 public void PrintWeaponStats() 38 { 39 Debug.LogFormat("Weapon: {0} - {1} DMB", name, damage); 40 } 41}
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.TextCore.Text; public class LearningCurve : MonoBehaviour { private int currentAge = 30; public int addedAge = 1; public float testFloat = 1.23f; public string testText = "Hello World."; public bool testBool = false; public int currentGold = 77; public bool pureOfHeart = true; public bool hasSecretIncantation = false; public string rareItem = "ハイポーション"; public string characterAction = "Attack"; public int diceRoll = 7; // Start is called before the first frame update void Start() { Character hero = new Character(); var heroine = new Character("僧侶"); Character hero2 = hero; hero2.name = "戦士"; hero.PrintStatsInfo(); hero2.PrintStatsInfo(); Weapon huntingBow = new Weapon("Hunting Bow", 105); } // Update is called once per frame void Update() { } }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Unity×C#の勉強本を見ながらコードを書いているので、誤字等がないか何度も確認しました。
Googleで検索してみましたが、類似したケースが見当たりませんでした。

補足

特になし

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

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

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

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

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

guest

回答1

0

自己解決

他のバグが発生してそれを解消したら、なぜかはわかりませんがエラーが消えていました。Unity側のバグだったようです。

投稿2024/09/11 16:27

taro_puff

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問