前提・実現したいこと
Unity内のC#で引数を渡す際に,Pythonのようにリストや辞書をアンパックして渡したいです.
Unity, C# 初心者です.
調べても解決しなかったので質問させていただきます.
詳しい方ご教授お願い致します.
以下 pythonでの例
python
1class Character: 2 def __init__(self, name, hp, mp, atk, def_): 3 self.name = name 4 self.hp = hp 5 self.mp = mp 6 self.atk = atk 7 self.def_ = def_ 8 9def main(): 10 character_list = ["hogeman", 10, 10, 10, 10] 11 hogeman_list = Character(*character_list) 12 13 character_dict = {"name": "hogman", "hp": 10, "mp": 10, "atk": 10, "def_": 10} 14 hogeman_dict = Character(**character_dict) 15 16if __name__ == "__main__": 17 main()
上記pythonの例のように以下のようにC#でも記述したい.
C#
1using System.Collections.Generic; 2 3public class Character { 4 public string name; 5 public int hp; 6 public int mp; 7 public int atk; 8 public int def; 9 10 public Character(string name, int hp, int mp, int atk, int def) { 11 this.name = name; 12 this.hp = hp; 13 this.mp = mp; 14 this.atk = atk; 15 this.def = def; 16 } 17} 18 19public class CharacterManager { 20 public void CharacterInstance() { 21 var character_list = new List<T>() {"hogeman", 10, 10, 10, 10}; 22 var hogeman_list = new Character(/* アンパックされた */character_list); 23 24 var character_dict = new Dictionary<string, T>() { 25 {"name", "hogeman"}, 26 {"hp", 10}, 27 {"mp", 10}, 28 {"atk", 10}, 29 {"def", 10}, 30 }; 31 var hogeman_dict = new Character(/* アンパックされた */character_dict); 32 33 // 次のようにはしない 34 var yaritakunai = new Character(Character(character_list[0]), character_list[1], ~~~~ ); 35 var yaritakunai = new Character(Character(character_dict["name"]), character_dict["hp"], ~~~~ ); 36 } 37}
なお,次の前提でやっています.
- フィールドに合わせたリスト,辞書を用意する
- フィールドの種類は増減する
バージョン
- Unity 2020.3.13f1
- .NET 4.0
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/08/06 03:32
2021/08/06 04:18 編集
退会済みユーザー
2021/08/06 04:03