public void PlayVoice(string urlLocal) { AudioListener.volume = 0f; //找到对应位置的语音动画播放 PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; // Debug.LogWarning("玩家index:" + (pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1)); int index = pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1; UIMainView.Instance.PlayerPlayingPanel._playingHead[index].GetChild(4).GetComponent <Animator>().SetBool("isPlayOthers", true); //Debug.LogWarning("动画没问题"); string ext = DateTime.Now.ToFileTime().ToString(); if (VoiceFlag == 1) { string[] pathSplit = voices[0].szRecordUrlPath.Split('/'); string localFilePath = isExistGvoiceFile(MahjongLobby_AH.SDKManager.DataPath) + pathSplit[pathSplit.Length - 1]; int downLoadErr = m_voiceengine.DownloadRecordedFile(ByteArrayToHexString(voices[0].id), localFilePath, 6000); ShortTalkData std = GameData.Instance.ShortTalkData; if (!std._DownLoadFilePath.ContainsKey(voices[0].szRecordUrlPath)) { std._DownLoadFilePath.Add(voices[0].szRecordUrlPath, localFilePath); Debug.LogWarning("下载地址1:" + voices[0].szRecordUrlPath); } Debug.LogWarning("下载地址2:" + localFilePath); m_voiceengine.OnPlayRecordFilComplete += (code, filePath) => { if (code != IGCloudVoice.GCloudVoiceCompleteCode.GV_ON_PLAYFILE_DONE) { Debug.Log("OnPlayRecordFilComplete error" + code); } else { Chenggong = true; StartCoroutine(CompeletPlay()); } }; ErroOccur(downLoadErr, () => { StartCoroutine(CompeletPlay()); }); } else { YunVaImSDK.instance.RecordStartPlayRequest(urlLocal, voices[0].szRecordUrlPath, ext, (data2) => { Debug.LogWarning("data2.result:" + data2.result + "Chenggong:" + Chenggong); if (data2.result == 0) { Chenggong = true; StartCoroutine(CompeletPlay()); } else { VoiceInit(); // StartCoroutine(CompeletPlay()); //Debug.LogWarning("播放失败");//关静音 Debug.LogWarning(voices[0].szRecordUrlPath); MahjongCommonMethod.Instance.ShowRemindFrame("语音播放失败", true); } }); } }
/// <summary> /// 当收到语音消息通知 /// </summary> /// <param name="url"></param> /// <param name="time"></param> /// <param name="HasRead"></param> /// <param name="isSelf"></param> /// <param name="szurl">头像地址</param> internal void OnReceiveVoice(string url, float time, bool HasRead, bool isSelf, string szurl, byte [] id) { // ig2 = _gChildPanel[2].transform.GetChild(0).GetComponent<InfinityGridLayoutGroup>(); ShortTalkData std = GameData.Instance.ShortTalkData; GameObject obj = Instantiate(Resources.Load <GameObject>("Game/ShortTalk/VoiceMessage")); obj.transform.SetParent(_gChildPanel[2].transform.GetChild(0)); obj.transform.localEulerAngles = Vector3.zero; obj.transform.localPosition = new Vector3(obj.transform.localPosition.x, obj.transform.localPosition.y, 0); obj.transform.localScale = Vector3.one; PreVoiceTalkManage pvtm = obj.GetComponent <PreVoiceTalkManage>(); pvtm._url = url; pvtm._time = time; pvtm._hasRead = HasRead; pvtm._isSelf = isSelf; pvtm._headUrl = szurl; pvtm._id = id; pvtm.UpdateShow();//更新显示条 ShortTalkData.VoiceData _pvtm = new ShortTalkData.VoiceData(); _pvtm._url = pvtm._url; _pvtm._time = pvtm._time; _pvtm._hasRead = pvtm._hasRead; _pvtm._isSelf = pvtm._isSelf; _pvtm._headUrl = pvtm._headUrl; std.AddVoiceData(_pvtm); // Debug.LogError("count" + std._voiceData.Count); //if (std._voiceData.Count>6) //{ // ig2.SetAmount(std._voiceData.Count); // ig2.updateChildrenCallback = UpdateVoiceCallBack; //} }
public IEnumerator ReadTips() { for (int isex = 0; isex < 2; isex++) { string path2 = ""; if (isex == 1) { path2 = "/BShortTalk.txt"; } else { path2 = "/GShortTalk.txt"; } string path = // path = Application.streamingAssetsPath + "/ShortTalk.txt"; #if UNITY_ANDROID && !UNITY_EDITOR Application.streamingAssetsPath + path2; #elif UNITY_IPHONE && !UNITY_EDITOR Application.streamingAssetsPath + path2; #elif UNITY_STANDALONE_WIN || UNITY_EDITOR Application.dataPath + "/StreamingAssets" + path2; #else string.Empty; #endif ShortTalkData std = GameData.Instance.ShortTalkData; if (path.Contains("://")) { WWW www = new WWW(path); while (!www.isDone) { yield return(www); } if (www.error != null) { Debug.LogWarning("读取ShortTalk.txt文件失败:" + www.error); } //获取tips中的所有内容 string[] str = www.text.Split('\n'); for (int i = 0; i < str.Length; i++) { std.szShortTalk[isex].Add(str[i]); } } else { string[] str = (System.IO.File.ReadAllText(path)).Split('\n'); for (int i = 0; i < str.Length; i++) { std.szShortTalk[isex].Add(str[i]); } } } CloneShortTalkPre(); }
//IEnumerator DownLoadVoice() //{ // yield return new WaitUntil(() => // { // bool aa = false; // aa = DownVoice(); // Debug.LogError("是否下载完" + aa); // return aa; // }); // Debug.LogError("----------下载完播放"); // PlayRecordVoice(); //} /// <summary> /// 播放声音 /// </summary> public void PlayRecordVoice() { ShortTalkData std = GameData.Instance.ShortTalkData; if (!std._DownLoadFilePath.ContainsKey(_url))//如果未下载 { Debug.LogWarning("未下载"); DownVoice(); //StartCoroutine(DownLoadVoice()); return; } PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData; Debug.LogWarning("开播"); string ext = DateTime.Now.ToFileTime().ToString(); if (VoiceManegerMethord.Instance.isPlayingState) { VoiceManegerMethord.Instance.StopPlayingVoice(); } AudioListener.pause = true; if (VoiceManegerMethord.VoiceFlag == 1) { int downLoadErr = VoiceManegerMethord.Instance.m_voiceengine.PlayRecordedFile(std._DownLoadFilePath[_url]); VoiceManegerMethord.Instance.ErroOccur(downLoadErr, null); VoiceManegerMethord.Instance.m_voiceengine.OnPlayRecordFilComplete += (code, filePath) => { if (code != IGCloudVoice.GCloudVoiceCompleteCode.GV_ON_PLAYFILE_DONE) { Debug.Log("OnPlayRecordFilComplete error" + code); } else { Debug.LogError("播放失败:" + code);//关静音 //MahjongCommonMethod.Instance.ShowRemindFrame("语音播放失败"); } AudioListener.pause = false; }; } else { YunVaImSDK.instance.RecordStartPlayRequest(std._DownLoadFilePath[_url], "", ext, (data2) => { if (data2.result == 0) { // PanlePlayers[panelNum].FindChild("P" + pwpd.GetOtherPlayerShowPos(pwpd.GetOtherPlayerPos(voices[0].iUserId)).ToString()).FindChild("VoicePic").GetComponent<SpriteRenderer>().enabled = false; Debug.Log("播放成功"); } else { Debug.LogError("播放失败");//关静音 anhui.MahjongCommonMethod.Instance.ShowRemindFrame("语音播放失败"); } // UIMainView.Instance.PlayerPlayingPanel._playingHead[pppd.GetOtherPlayerShowPos(pppd.GetOtherPlayerPos(voices[0].iUserId)) - 1].GetChild(4).GetComponent<Animator>().SetBool("isPlayOthers", false); AudioListener.pause = false; }); } }
//InfinityGridLayoutGroup ig3; void UpdateVoiceCallBack(int index, Transform trans) { ShortTalkData std = GameData.Instance.ShortTalkData; PreVoiceTalkManage pvt = trans.GetComponent <PreVoiceTalkManage>(); pvt._url = std._voiceData[index]._url; pvt._time = std._voiceData[index]._time; pvt._hasRead = std._voiceData[index]._hasRead; pvt._isSelf = std._voiceData[index]._isSelf; pvt._headUrl = std._voiceData[index]._headUrl; // pvt._url = std._voiceData[index]._url; pvt.UpdateShow(); }
/// <summary> /// 在游戏一开始的时候加载快捷语 /// </summary> public void CloneShortTalkPre() { int isex = SDKManager.Instance.isex; ShortTalkData std = GameData.Instance.ShortTalkData; for (int i = 0; i < std.szShortTalk[isex].Count; i++) { // Debug.LogError(std.szShortTalk[i]); GameObject go = Instantiate(Resources.Load <GameObject>("Game/ShortTalk/ShortTalkText")); go.transform.SetParent(_gChildPanel[0].transform.GetChild(0)); go.transform.localEulerAngles = Vector3.zero; go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, 0); go.transform.localScale = Vector3.one; go.GetComponent <PreShortTalkManage>()._text.text = std.szShortTalk[isex][i]; go.GetComponent <PreShortTalkManage>()._mID = i; } }
internal void UpdateShow() { ShortTalkData std = GameData.Instance.ShortTalkData; if (std.isShowPanel) { _gPanelchat.SetActive(true); if (std.szShortTalk[0].Count > 6 && _gChildPanel[0].activeInHierarchy) { ig1 = _gChildPanel[0].transform.GetChild(0).GetComponent <InfinityGridLayoutGroup>(); ig1.SetAmount(std.szShortTalk[0].Count); ig1.updateChildrenCallback = UpdateCallBack; } } else { _gPanelchat.SetActive(false); } }
/// <summary> /// 当点击播放记录的时候下载到本地 /// </summary> public void DownVoice() { //bool bb = false; string DownLoadlocalfilePath = string.Format("{0}{1}.amr", VoiceManegerMethord.Instance.isExistGvoiceFile(MahjongLobby_AH.SDKManager.DataPath), DateTime.Now.ToFileTime()); ShortTalkData std = GameData.Instance.ShortTalkData; if (!std._DownLoadFilePath.ContainsKey(_url)) { std._DownLoadFilePath.Add(_url, DownLoadlocalfilePath); } string fileid = DateTime.Now.ToFileTime().ToString(); if (VoiceManegerMethord.VoiceFlag == 1) { int downLoadErr = VoiceManegerMethord.Instance.m_voiceengine.DownloadRecordedFile(VoiceManegerMethord.ByteArrayToHexString(_id), DownLoadlocalfilePath, 6000); } else { YunVaImSDK.instance.DownLoadFileRequest(_url, DownLoadlocalfilePath, fileid, (data4) => { if (data4.result == 0) { Debug.Log("下载成功:" + data4.filename); PlayRecordVoice(); // bb = true; } else { Debug.Log("下载失败:" + data4.msg); //bb = false; } }); } //return bb; }