前提・実現したいこと
Unityでカードゲームを作ろうとしています。
現在、デッキエディット画面を作ろうとしていて、カード検索部分のプログラムを書いています。
この画像がエディット画面の一部です。
3つのドロップダウンと4つのテキストボックスで構成しています。
現状、まず1つ目のドロップダウンでカード種(画像のKindの部分)でswitch文で分岐させ、
Lv、Textのテキストボックスの入力の有無をif文、Typeのドロップダウンで更にswitch文、
最終的にfor文でカードを表示させています。
下記がそのスプリクトの一部です。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System; 6public class CardSearch : MonoBehaviour 7{ 8 public InputField Level; 9 public InputField ATK; 10 public InputField DEF; 11 public InputField Text; 12 public Dropdown kindDD1; 13 public Dropdown kindDD2; 14 public Dropdown Type; 15 int Lv, atk, def,i; 16 public GameObject SearchArea; 17 public GameObject CardData; 18 public GameObject CardID_; 19 GameObject Obj; 20 [SerializeField] private unit unit; 21 [SerializeField] private item item; 22 [SerializeField] private spel spel; 23 public void UnitSearch(int x) 24 { 25 CardData.GetComponent<CardD>().ShowDataU(x); 26 Obj = Instantiate(CardData, this.transform.position, Quaternion.identity); 27 Obj.GetComponent<CardID>().cardID =unit.Sheet1[x].id; 28 Obj.transform.parent = SearchArea.transform; 29 } 30 public void SpelSearch(int x) 31 { 32 CardData.GetComponent<CardD>().ShowDataS(x); 33 Obj = Instantiate(CardData, this.transform.position, Quaternion.identity); 34 Obj.GetComponent<CardID>().cardID = spel.Sheet1[x].id; 35 Obj.transform.parent = SearchArea.transform; 36 } 37 public void ItemSearch(int x) 38 { 39 CardData.GetComponent<CardD>().ShowDataI(x); 40 Obj = Instantiate(CardData, this.transform.position, Quaternion.identity); 41 Obj.GetComponent<CardID>().cardID = item.Sheet1[x].id; 42 Obj.transform.parent = SearchArea.transform; 43 } 44 void Start() 45 { 46 Int32.TryParse(Level.text, out Lv); 47 Int32.TryParse(ATK.text, out atk); 48 Int32.TryParse(DEF.text, out def); 49 foreach (Transform child in SearchArea.transform) 50 { 51 Destroy(child.gameObject); 52 } 53 54 int UD = unit.Sheet1.Count; 55 int ID = item.Sheet1.Count; 56 int SD = spel.Sheet1.Count; 57 for (i = 0; i < UD; i++) 58 { 59 UnitSearch(i); 60 } 61 for (i = 0; i < SD; i++) 62 { 63 SpelSearch(i); 64 } 65 for (i = 0; i < ID; i++) 66 { 67 ItemSearch(i); 68 } 69 } 70public void CardSEARCH() 71 { 72 Int32.TryParse(Level.text, out Lv); 73 Int32.TryParse(ATK.text, out atk); 74 Int32.TryParse(DEF.text, out def); 75 foreach (Transform child in SearchArea.transform) 76 { 77 Destroy(child.gameObject); 78 } 79 int UD = unit.Sheet1.Count; 80 int SD = spel.Sheet1.Count; 81 int ID = item.Sheet1.Count; 82 83 switch (kindDD1.value) 84 { 85 case 0: 86 if (String.IsNullOrEmpty(Text.text) && 87 String.IsNullOrEmpty(Level.text)) 88 { 89 switch (Type.value) 90 { 91 case 0: 92 for (i = 0; i < UD; i++) 93 { 94 UnitSearch(i); 95 } 96 for (i = 0; i < SD; i++) 97 { 98 SpelSearch(i); 99 } 100 for (i = 0; i < ID; i++) 101 { 102 ItemSearch(i); 103 } 104 break; 105 case 1: 106 for (i = 0; i < UD; i++) 107 { 108 if (String.IsNullOrEmpty(unit.Sheet1[i].type)) 109 { 110 UnitSearch(i); 111 } 112 } 113 for (i = 0; i < SD; i++) 114 { 115 if (String.IsNullOrEmpty(spel.Sheet1[i].type)) 116 { 117 SpelSearch(i); 118 } 119 } 120 for (i = 0; i < ID; i++) 121 { 122 if (String.IsNullOrEmpty(item.Sheet1[i].type)) 123 { 124 ItemSearch(i); 125 } 126 } 127 break; 128 case 2: 129--------------------中文略-------------- 130 case 40: 131 for (i = 0; i < UD; i++) 132 { 133 if (unit.Sheet1[i].type.Contains("盾")) 134 { 135 UnitSearch(i); 136 } 137 } 138 for (i = 0; i < SD; i++) 139 { 140 if (spel.Sheet1[i].type.Contains("盾")) 141 { 142 SpelSearch(i); 143 } 144 } 145 for (i = 0; i < ID; i++) 146 { 147 if (item.Sheet1[i].type.Contains("盾")) 148 { 149 ItemSearch(i); 150 } 151 } 152 break; 153 } 154 } 155 else if (String.IsNullOrEmpty(Level.text) == false && 156 String.IsNullOrEmpty(Text.text) == false) 157 { 158 switch (Type.value) 159 { 160 case 0: 161 for (i = 0; i < UD; i++) 162 { 163 if (Lv == unit.Sheet1[i].level) 164 { 165 if (unit.Sheet1[i].name1.Contains(Text.text) || 166 unit.Sheet1[i].name2.Contains(Text.text) || 167 unit.Sheet1[i].effect1.Contains(Text.text) || 168 unit.Sheet1[i].effect2.Contains(Text.text) || 169 unit.Sheet1[i].effect3.Contains(Text.text)) 170 { 171 UnitSearch(i); 172 } 173 } 174 } 175 for (i = 0; i < SD; i++) 176 { 177 if (Lv == spel.Sheet1[i].level) 178 { 179 if (spel.Sheet1[i].name1.Contains(Text.text) || 180 spel.Sheet1[i].name2.Contains(Text.text) || 181 spel.Sheet1[i].effect1.Contains(Text.text) || 182 spel.Sheet1[i].effect2.Contains(Text.text) || 183 spel.Sheet1[i].effect3.Contains(Text.text) || 184 spel.Sheet1[i].effect4.Contains(Text.text)) 185 { 186 SpelSearch(i); 187 } 188 } 189 } 190 for (i = 0; i < ID; i++) 191 { 192 if (Lv == item.Sheet1[i].level) 193 { 194 if (item.Sheet1[i].name1.Contains(Text.text) || 195 item.Sheet1[i].name2.Contains(Text.text) || 196 item.Sheet1[i].effect1.Contains(Text.text) || 197 item.Sheet1[i].effect2.Contains(Text.text) || 198 item.Sheet1[i].effect3.Contains(Text.text) || 199 item.Sheet1[i].effect4.Contains(Text.text)) 200 { 201 ItemSearch(i); 202 } 203 } 204 } 205 break; 206 case 1:
現在記入途中ですが14550行にもなってしまっています。
まだトグルによる検索も実装しようとしています。
どうにか圧縮して書く方法はありますか?
また、検索実行したときに2分ほど時間がかかるのですが短縮する方法はあるでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/11 03:43
2020/06/11 04:39 編集
2020/06/11 08:21
2020/06/11 08:29
2020/06/11 13:58 編集
2020/06/11 23:54
2020/06/12 22:47
2020/06/14 12:31