実現したいこと
タイピングゲームで、ノーミスだったらボーナスポイントを加算する
発生している問題・分からないこと
上記の機能を実装したいのですが、なぜか正しいキーを入力しても間違ったキーを入力したときの値が返されてしまい、実装できません
該当のソースコード
TypingManager
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using TMPro; 6using System; 7 8[Serializable] 9public class Question 10{ 11 public string Japanese; 12 public string Romaji; 13} 14 15public class TypingManager : MonoBehaviour 16{ 17 [SerializeField] private Question[] questions; 18 19 [SerializeField] private TextMeshProUGUI textJapanese; 20 [SerializeField] private TextMeshProUGUI textRomaji; 21 22 private readonly List<char> _Romaji = new List<char>(); 23 24 private int _RomajiIndex; 25 26 27 28 GameObject points; 29 public static int pts; 30 int misscount; 31 32 // Start is called before the first frame update 33 void Start() 34 { 35 this.points = GameObject.Find("Point"); 36 37 InitializeQuestion(); 38 } 39 40 // Update is called once per frame 41 void OnGUI() 42 { 43 this.points.GetComponent<TextMeshProUGUI>().text = pts.ToString() + " pts"; 44 45 if (Event.current.type == EventType.KeyDown) 46 { 47 switch (InputKey(GetCharFromKeyCode(Event.current.keyCode))) 48 { 49 case 1: 50 _RomajiIndex++; 51 if (_Romaji[_RomajiIndex] == '@') 52 { 53 pts += 10; 54 if (misscount == 0) 55 { 56 pts += (_RomajiIndex * 100); 57 } 58 InitializeQuestion(); 59 } 60 else 61 { 62 pts += 10; 63 textRomaji.text = GenerateTextRomaji(); 64 } 65 break; 66 case 2: 67 misscount++; 68 Debug.Log(misscount); 69 break; 70 } 71 } 72 } 73 74 void InitializeQuestion() 75 { 76 Question question = questions[UnityEngine.Random.Range(0, questions.Length)]; 77 78 _Romaji.Clear(); 79 80 _RomajiIndex = 0; 81 misscount = 0; 82 83 char[] characters = question.Romaji.ToCharArray(); 84 85 foreach (char character in characters) 86 { 87 _Romaji.Add(character); 88 } 89 90 _Romaji.Add('@'); 91 92 textJapanese.text = question.Japanese; 93 textRomaji.text = GenerateTextRomaji(); 94 95 Debug.Log(_Romaji[_RomajiIndex]); 96 97 } 98 99 string GenerateTextRomaji() 100 { 101 string text = "<style=typed>"; 102 for (int i = 0; i < _Romaji.Count; i++) 103 { 104 if (_Romaji[i] == '@') 105 { 106 break; 107 } 108 109 if (i == _RomajiIndex) 110 { 111 text += "</style><style=untyped>"; 112 } 113 114 text += _Romaji[i]; 115 } 116 117 text += "</style>"; 118 119 return text; 120 } 121 122 123 int InputKey(char inputChar) 124 { 125 Debug.Log(inputChar); 126 if (inputChar == _Romaji[_RomajiIndex]) 127 { 128 return 1; 129 } 130 131 if (inputChar != _Romaji[_RomajiIndex]) 132 { 133 Debug.Log("miss"); 134 return 2; 135 } 136 137 return 0; 138 } 139 140 char GetCharFromKeyCode(KeyCode keyCode) 141 { 142 switch (keyCode) 143 { 144 case KeyCode.A: 145 return 'a'; 146 case KeyCode.B: 147 return 'b'; 148 case KeyCode.C: 149 return 'c'; 150 case KeyCode.D: 151 return 'd'; 152 case KeyCode.E: 153 return 'e'; 154 case KeyCode.F: 155 return 'f'; 156 case KeyCode.G: 157 return 'g'; 158 case KeyCode.H: 159 return 'h'; 160 case KeyCode.I: 161 return 'i'; 162 case KeyCode.J: 163 return 'j'; 164 case KeyCode.K: 165 return 'k'; 166 case KeyCode.L: 167 return 'l'; 168 case KeyCode.M: 169 return 'm'; 170 case KeyCode.N: 171 return 'n'; 172 case KeyCode.O: 173 return 'o'; 174 case KeyCode.P: 175 return 'p'; 176 case KeyCode.Q: 177 return 'q'; 178 case KeyCode.R: 179 return 'r'; 180 case KeyCode.S: 181 return 's'; 182 case KeyCode.T: 183 return 't'; 184 case KeyCode.U: 185 return 'u'; 186 case KeyCode.V: 187 return 'v'; 188 case KeyCode.W: 189 return 'w'; 190 case KeyCode.X: 191 return 'x'; 192 case KeyCode.Y: 193 return 'y'; 194 case KeyCode.Z: 195 return 'z'; 196 case KeyCode.Minus: 197 return '-'; 198 default: 199 return '\n'; 200 } 201 } 202} 203
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Googleで検索しましたが、解決方法は見つかりませんでした
ソースコードを変えても結果は変わりませんでした
補足
Unity:2022.3.11f1
参考にしたサイト:https://qiita.com/AkioMabuchi/items/a7afa292b9e47123b222#%E8%A1%A8%E7%A4%BA%E7%94%A8%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E6%83%85%E5%A0%B1%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0-generateromantext
回答1件
あなたの回答
tips
プレビュー