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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

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

Q&A

解決済

1回答

2547閲覧

unity Listにクラスを格納したい

akira.y

総合スコア3

Unity

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

0グッド

0クリップ

投稿2020/08/29 12:32

ボタンを押すとキャラクターの習得しているスキルを表示するようにしたい
その際Listに習得スキルを格納して、列挙するような形ができないか考えています。
が、列挙云々の前にListに格納の段階で詰まっています。

C#

1public class SkillButton : MonoBehaviour 2{ 3 public GameObject obj, parentobject, prefab; 4 public AttackSkill attackSkill; 5 public Enemy enemy; 6 public Character character; 7 8 bool button = true;//オンオフ機能 9 10 private void Start() 11 { 12 parentobject = GameObject.Find("スキル一覧"); 13 prefab = (GameObject)Resources.Load("prefab"); 14 } 15 16 public void OnClick() 17 { 18 if(button == true)//ボタンを押すと習得しているスキルボタンができる 19 { 20 obj = Instantiate(prefab) as GameObject; 21 obj.transform.SetParent(parentobject.transform, false); 22 obj.transform.localPosition = new Vector3(0.0f, 100.0f, 0.0f); 23 obj.GetComponent<Button>().onClick.AddListener(attackSkill.Attack); 24 Text obj_text = obj.GetComponentInChildren<Text>(); 25 obj_text.text = attackSkill.GetSkillName();//ボタンのテキストをスキルの名前に変更 26 button = false; 27 } 28 else//再度押すと消せる 29 { 30 Destroy(obj); 31 button = true; 32 } 33 } 34 35} 36

下記classをListに入れたい

C#

1public class AttackSkill : MonoBehaviour 2{ 3 public Character character; 4 public Enemy enemy; 5 private string skillname = "アタック"; 6 7 public string GetSkillName() 8 { 9 return skillname; 10 } 11 12 public void Attack() 13 { 14 enemy.ehp -= character.atk; 15 Debug.Log(enemy.ehp); 16 } 17 18} 19

まだまだ理解できないことが多々あり、見当違いの質問かもしれませんがよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず「classをListに入れたい」という表現がそもそも間違ってます。
Listに入れられるのはオブジェクト(インスタンス)です。

単純にC#で特定のクラスのインスタンスのみを扱うListを使う場合、以下のようにGereric Listを利用するのが一般的です。

C#

1var obj = new AttackSkill(); 2var list = new System.Collections.Generic.List<AttackSkill>(); 3list.Add(obj);

投稿2020/08/29 12:50

編集2020/08/29 13:03
gentaro

総合スコア8947

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

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

akira.y

2020/08/29 16:27

なんでもかんでも入れられるわけではないのですね。。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問