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

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

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

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

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

Unity

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

Q&A

解決済

2回答

1515閲覧

C# 継承の使い方...

Tomo0225

総合スコア67

C#

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

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

Unity

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

0グッド

0クリップ

投稿2020/11/20 07:59

UnityでBaseMagicを継承したFireクラスを作成したところエラーが4つでてしまったのですが原因が分かりません。どこがおかしいのか教えていただきたいです。よろしくお願いします。

BaseMagicクラス

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using BattleScene; 5using BattleScene.Chara; 6 7namespace BattleScene.Magic{ 8 9public class BaseMagic : IMagic 10{ 11 public int DownMP { get; set; } 12 TextManager textmanager = GameObject.Find("battletext").GetComponent<TextManager>(); 13 14 public void Use(Player attacker,Player defender); 15 16 public bool canUse(Player player){ 17 if(player.MP >= DownMP){ 18 return true; 19 } 20 return false; 21 } 22} 23 24}

Fireクラス

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using BattleScene; 5using BattleScene.Chara; 6 7namespace BattleScene.Magic{ 8 9public class Fire : BaseMagic 10{ 11 public Fire(){ 12 public int maxDamage { get; set; } = 30; 13 public int minDamage { get; set; } = 10 14 base.DownMP = 20; 15 } 16 17 public override void Use(Player attacker,Player defender){ 18 int calcedDamage = UnityEngine.Random.Range(this.minDamage,this.maxDamage+1); 19 base.textmanager.battleLog($"{attacker.PlayerName}のファイア! {defender.PlayerName}に{calcedDamage}のダメージ"); 20 attacker.MP = attacker.MP-base.DownMP; //mp消費-20 21 defender.damage(calcedDamage); 22 attacker.AttackFinished = true; 23 } 24} 25 26}
Assets\MainBattle\BattleScene\Magic\Fire.cs(11,19): error CS1513: } expected Assets\MainBattle\BattleScene\Magic\Fire.cs(14,9): error CS1519: Invalid token 'base' in class, struct, or interface member declaration Assets\MainBattle\BattleScene\Magic\Fire.cs(14,21): error CS1519: Invalid token '=' in class, struct, or interface member declaration Assets\MainBattle\BattleScene\Magic\Fire.cs(26,1): error CS1022: Type or namespace definition, or end-of-file expected

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/11/20 08:09 編集

まずエラーコードとエラーメッセージでググってください。 単純なコンパイルエラーはエラー内容をきちんと読んで調べれば自力で解決出来る筈です。 翻訳も検索も面倒だから調べてという話ならお断りします。
退会済みユーザー

退会済みユーザー

2020/11/20 08:03

継承の方法とかの以前の問題で、単純に } が足りないとかの文法ミスのようですが?
guest

回答2

0

minDamageの行、セミコロンが抜けてます。
あとコンストラクタの中でpublic使ってるがおかしいと思います。
そのpublicと書いている行であなたは何をやりたいのか、そのために使うべき正しい書き方はどのようなものかを確認してください。

投稿2020/11/20 08:14

編集2020/11/20 08:15
ku__ra__ge

総合スコア4524

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

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

0

ベストアンサー

C#

1 public Fire(){ 2 public int maxDamage { get; set; } = 30; 3 public int minDamage { get; set; } = 10 4 base.DownMP = 20; 5 }

「関数内で定義したものは関数でしか使えない」ので、maxDamageとminDamageはFire()内でしか使えませんし、その上で「どこでもアクセス出来るようにする」という意味のpublicの付けているのですから、コンパイラから見ればもはや意味不明でしょう。
もしmaxDamageとminDamageを他のクラスから参照したいのであれば、Fire()外で定義すべきです。

投稿2020/11/20 08:13

fiveHundred

総合スコア9774

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

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

Tomo0225

2020/11/20 08:37

コンストラクタ内でmaxDamageとminDamageを定義しているのがいけなかったんですね。言われておかしいことだと気づきました。 助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問