public void TransferOut() { if (mCurState == TranState.TranOut) { return; } TranVO tran = new TranVO(); tran.OriValue = 0; tran.DestValue = xc.GlobalSettings.GetInstance().MusicVolume; tran.Time = 2f; mMainAudio.SetTranVO(tran); tran = new TranVO(); tran.OriValue = xc.GlobalSettings.GetInstance().MusicVolume; tran.DestValue = 0f; tran.Time = 2f; mFightAudio.SetTranVO(tran); mCurState = TranState.TranOut; }
void QueueAddState(float fStartTime, float BPMScale, List <string> danceAniSeq, bool isBoy) { float startStateTime = fStartTime; float startDuration = 0; float fdurtion = 0; float startFrame = 0; for (int i = 0; i < danceAniSeq.Count; i++) { string stateName = danceAniSeq[i]; if (!AnimationLoader.s_AniStates.ContainsKey(stateName)) { continue; } AniState state = AnimationLoader.s_AniStates[stateName]; string clipName = state.Motion; AnimationClip animClip = AnimationLoader.GetAnimationClip(clipName); if (animClip == null) { Debug.LogError("Dance error, animation can not be null." + clipName); continue; } //AddAnimationPlayEvent(startStateTime, stateName, nLayer); if (startDuration != 0) { if (CheckIfAvailableAni(stateName)) { AddAnimationBlendEvent(startDuration, clipName, fdurtion, startFrame, state.Speed, isBoy); } if (i > 0) { int tmpIndex = i - 1; AniState revState = AnimationLoader.s_AniStates[AnimationLoader.DanceAniSequence[tmpIndex]]; if (CheckIfAvailableAni(revState.Name)) { AddAnimationRemoveEvent(startDuration + animClip.length, revState.Motion, isBoy); } } } else { if (CheckIfAvailableAni(stateName)) { AddAnimationPlayEvent(startStateTime, clipName, state.Speed, isBoy); } if (i > 0) { int tmpIndex = i - 1; AniState revState = AnimationLoader.s_AniStates[AnimationLoader.DanceAniSequence[tmpIndex]]; if (CheckIfAvailableAni(revState.Name)) { AddAnimationRemoveEvent(startDuration + animClip.length, revState.Motion, isBoy); } } } AniState nextState = null; TranState nextTran = null; List <TranState> trans = state.Trans; foreach (TranState tran in trans) { if (tran != null && isBoy == tran.IsBoy && AnimationLoader.s_AniStates.ContainsKey(tran.DestState)) { nextState = AnimationLoader.s_AniStates[tran.DestState]; nextTran = tran; break; } } if (nextState == null) { foreach (TranState tran in trans) { if (tran != null && AnimationLoader.s_AniStates.ContainsKey(tran.DestState)) { nextState = AnimationLoader.s_AniStates[tran.DestState]; nextTran = tran; break; } } } if (nextState != null && nextTran != null) { AnimationClip nextAnimClip = AnimationLoader.GetAnimationClip(nextState.Motion); if (nextAnimClip != null) { if (state.Speed != 0 && nextTran.ExitTime != 0) { startDuration = startStateTime + animClip.length / state.Speed * nextTran.ExitTime; startStateTime = startDuration - nextAnimClip.length / AnimationLoader.s_AniStates[nextTran.DestState].Speed * nextTran.TranOffset; fdurtion = animClip.length * nextTran.TranDuration / state.Speed; startFrame = nextAnimClip.length * nextTran.TranOffset; } else { Debug.LogError("Animation speed or next ExitTime is zero! Please Check it, aniName is : " + clipName); } } } else { break; } } }