public static PlayerReadingData GetReadingDataFromJsonData(JsonData jsonData) { PlayerReadingData data = new PlayerReadingData(); data.standardAnswer = jsonData.TryGetString("standardAnswer"); data.playerAnswer = jsonData.TryGetString("playerAnswer"); data.accuracy = float.Parse(jsonData.TryGetString("accuracy")); data.score = int.Parse(jsonData.TryGetString("score")); return(data); }
/// <summary> /// 既是讯飞语音的回调,也是检查匹配函数 /// </summary> /// <param name="content"></param> public void GetSRCallback(string content) { LogManager.Log("讯飞got:", content); if (!m_VoiceCheckFinished) { // "语音" 每句提前结束 LogManager.Log(" ____ \"语音\" 每句提前结束 "); m_CurrentReadingData.playerAnswer = content; int rightNumber = 0; string[] words; if (LanguageManager.languageType == LanguageType.Chinese) { words = content.ToLower().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); } else { LogManager.Log("讯飞got content length: ", content.Length); words = new string[content.Length]; for (int i = 0; i < content.Length; ++i) { words[i] = content[i].ToString(); } LogManager.Log("讯飞got words length: ", content.Length); } for (int i = 0; i < words.Length; i++) { if (m_CurVoiceCheckList.Contains(words[i])) { rightNumber++; m_CurVoiceCheckList.Remove(words[i]); LogManager.Log("voice check right word:", words[i]); } } AnalysisManager.Instance.OnEvent("100003", null, StaticData.LevelID.ToString(), "发音次数"); float accuracy = (float)rightNumber / m_VoiceCheckNumber; m_CurrentReadingData.accuracy = accuracy; m_CurrentReadingData.score = (int)(accuracy * CorePlaySettings.Instance.m_VoiceRightPoint); CorePlayData.PlayerReadingData.Add(m_CurrentReadingData); m_CurrentReadingData = null; AnalysisManager.Instance.OnEvent("100004", null, StaticData.LevelID.ToString(), accuracy.ToString()); CorePlayManager.Instance.m_SumVoiceScore += accuracy; m_VoiceCheckFinished = true; if (m_VoiceCompleteCallback != null) { m_VoiceCompleteCallback.Invoke(accuracy); m_VoiceCompleteCallback = null; } } }
public static PlayerOperationData GetDataFromJson(string json) { PlayerOperationData data = new PlayerOperationData(); JsonData jsonData = JsonMapper.ToObject(json); data.clickAccuracy = float.Parse(jsonData.TryGetString("clickAccuracy")); data.clickScore = int.Parse(jsonData.TryGetString("clickScore")); data.clickNumber = int.Parse(jsonData.TryGetString("clickNumber")); data.clickAccuracy = int.Parse(jsonData.TryGetString("rightNumber")); data.wrongNumber = int.Parse(jsonData.TryGetString("wrongNumber")); data.wholeScore = int.Parse(jsonData.TryGetString("wholeScore")); JsonData readingData = jsonData["readingData"]; for (int i = 0; i < readingData.Count; i++) { data.m_ReadingData.Add(PlayerReadingData.GetReadingDataFromJsonData(readingData[i])); } return(data); }
public void GetVoiceCheckSentence(List <string> list, Action <float> callback) { m_VoiceCompleteCallback = callback; m_VoiceCheckFinished = false; m_CurrentReadingData = new PlayerReadingData(); StringBuilder standardAnswer = new StringBuilder(); for (int i = 0; i < list.Count; i++) { standardAnswer.Append(list[i] + " "); } m_CurrentReadingData.standardAnswer = standardAnswer.ToString(); StringBuilder sb = new StringBuilder(); m_CurVoiceCheckList.Clear(); for (int i = 0; i < list.Count; i++) { if (LanguageManager.languageType == LanguageType.Chinese) { if (list[i].Contains(" ")) { string[] words = list[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < words.Length; j++) { m_CurVoiceCheckList.Add(words[j].ToLower()); sb.Append(words[j].ToLower() + " "); } } else { m_CurVoiceCheckList.Add(list[i].ToLower()); sb.Append(list[i].ToLower() + " "); } } else { string content = list[i]; //有些高亮文字带()需要先去除 if (content.Contains("(")) { while (content.Contains("(")) { content = content.Remove(content.IndexOf('('), 1); } } if (content.Contains(")")) { while (content.Contains(")")) { content = content.Remove(content.IndexOf(')'), 1); } } //LogManager.LogError("GetVoiceCheckSentence,context length: " , content.Length); for (int j = 0; j < content.Length; ++j) { m_CurVoiceCheckList.Add(content[j].ToString()); } } } //LogManager.Log(" 普通 , Boss模式 检查语音:" , sb.ToString() ," / " , Time.frameCount); VoiceController.Start_RecordingAnim(); m_VoiceCheckNumber = m_CurVoiceCheckList.Count; }