public void CameraTransitionStart(PIPanoView.EPANOMESHMODE emode) { bool ret = false; //先判参数是否合法 foreach (KeyValuePair <PIPanoView.EPANOMESHMODE, PanoModeBase> kv in PIPanoView.Instance._ModeDic) { if (kv.Key == emode) { ret = true; break; } } if (!ret) { Debug.LogError("EPANOMESHMODE invalid: " + emode); StartCoroutine(CmaeraTransitionEnd(emode)); return; } ret = SetTransitionCameras(emode); if (!ret) { StartCoroutine(CmaeraTransitionEnd(emode)); } else { _NextMode = emode; StartCoroutine(ExecuteTransition()); } }
//根据当前模式和下一个模式,设置过渡动画相机 public bool SetTransitionCameras(PIPanoView.EPANOMESHMODE emode) { Camera cameraA = null; Camera cameraB = null; if (emode == PIPanoView.Instance._CurrentMode) { return(false); } //只对一个相机的模式做处理 foreach (KeyValuePair <PIPanoView.EPANOMESHMODE, Camera[]> kv in _CameraDic) { if (kv.Key == PIPanoView.Instance._CurrentMode) { if (kv.Value.Length == 1) { cameraA = kv.Value[0]; } else { //CameraTransitionManager.Instance.mCameraA.targetTexture = PanoManager.Instance.mPreRenderTexture;//PanoManager.Instance.mCameraPreRender.targetTexture; //cameraA = CameraTransitionManager.Instance.mCameraA; //cameraA = PanoManager.Instance.mCameraPreRender; } } if (kv.Key == emode) { if (kv.Value.Length == 1) { cameraB = kv.Value[0]; } } } //Debug.LogError("cameraA: " + cameraA); //Debug.LogError("cameraB: " + cameraB); if (cameraA == null || cameraB == null) { return(false); } else { //设置目标相机的显示 foreach (KeyValuePair <PIPanoView.EPANOMESHMODE, PanoModeBase> kv in PIPanoView.Instance._ModeDic) { if (kv.Key == emode) { kv.Value.gameObject.SetActive(true); } } assistant.cameraA = cameraA; assistant.cameraB = cameraB; return(true); } }
public IEnumerator CmaeraTransitionEnd(PIPanoView.EPANOMESHMODE emode) { if (emode == PIPanoView.EPANOMESHMODE.EMP_MAX) { emode = _NextMode; } PIPanoView.Instance.EnablePanoMode(emode); assistant.cameraA = null; assistant.cameraB = null; yield return(null); }