Fix full flow reset cleanup for outlines and residual objects, adjust EndPanel buttons
This commit is contained in:
@@ -19,6 +19,10 @@ public class AudioManager : MonoBehaviour
|
||||
private AudioSource _bgSource;
|
||||
private AudioSource _sfxSource;
|
||||
private AudioSource _voiceSource;
|
||||
private Coroutine _cameraSwitchRoutine;
|
||||
private Vector3 _camera3InitialPosition;
|
||||
private Quaternion _camera3InitialRotation;
|
||||
private bool _hasCamera3InitialTransform;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
@@ -42,6 +46,7 @@ public class AudioManager : MonoBehaviour
|
||||
if (_basketballSfx == null) _basketballSfx = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>("Assets/Audio/start/basketballSound.wav");
|
||||
if (_manCallSfx == null) _manCallSfx = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>("Assets/Audio/start/mancall.wav");
|
||||
#endif
|
||||
CacheCamera3InitialTransform();
|
||||
Debug.Log($"[AudioManager] 就绪 homeBg={_homeBg!=null} expBg={_experimentBg!=null} sfx={_basketballSfx!=null}/{_manCallSfx!=null}");
|
||||
}
|
||||
|
||||
@@ -49,6 +54,7 @@ public class AudioManager : MonoBehaviour
|
||||
public void PlayHomeBg()
|
||||
{
|
||||
if (_homeBg == null) return;
|
||||
if (_bgSource.clip == _homeBg && _bgSource.isPlaying) return;
|
||||
_bgSource.clip = _homeBg;
|
||||
_bgSource.volume = BgVolume;
|
||||
_bgSource.Play();
|
||||
@@ -58,6 +64,7 @@ public class AudioManager : MonoBehaviour
|
||||
public void PlayExperimentBg()
|
||||
{
|
||||
if (_experimentBg == null) return;
|
||||
if (_bgSource.clip == _experimentBg && _bgSource.isPlaying) return;
|
||||
_bgSource.clip = _experimentBg;
|
||||
_bgSource.volume = BgVolume;
|
||||
_bgSource.Play();
|
||||
@@ -99,7 +106,51 @@ public class AudioManager : MonoBehaviour
|
||||
|
||||
public void SwitchToCamera3()
|
||||
{
|
||||
StartCoroutine(SmoothSwitchCameraCoroutine());
|
||||
CacheCamera3InitialTransform();
|
||||
if (_cameraSwitchRoutine != null) StopCoroutine(_cameraSwitchRoutine);
|
||||
_cameraSwitchRoutine = StartCoroutine(SmoothSwitchCameraCoroutine());
|
||||
}
|
||||
|
||||
public void ResetCamerasToHome()
|
||||
{
|
||||
if (_cameraSwitchRoutine != null)
|
||||
{
|
||||
StopCoroutine(_cameraSwitchRoutine);
|
||||
_cameraSwitchRoutine = null;
|
||||
}
|
||||
|
||||
var mainCam = GameObject.Find("Main Camera");
|
||||
var cam2 = GameObject.Find("camera2");
|
||||
var cam3 = GameObject.Find("camera3");
|
||||
|
||||
SetCameraEnabled(mainCam, true);
|
||||
SetCameraEnabled(cam2, false);
|
||||
SetCameraEnabled(cam3, false);
|
||||
|
||||
if (cam3 != null && _hasCamera3InitialTransform)
|
||||
{
|
||||
cam3.transform.position = _camera3InitialPosition;
|
||||
cam3.transform.rotation = _camera3InitialRotation;
|
||||
}
|
||||
|
||||
Debug.Log("[AudioManager] 已恢复首页相机状态");
|
||||
}
|
||||
|
||||
private void CacheCamera3InitialTransform()
|
||||
{
|
||||
if (_hasCamera3InitialTransform) return;
|
||||
var cam3 = GameObject.Find("camera3");
|
||||
if (cam3 == null) return;
|
||||
_camera3InitialPosition = cam3.transform.position;
|
||||
_camera3InitialRotation = cam3.transform.rotation;
|
||||
_hasCamera3InitialTransform = true;
|
||||
}
|
||||
|
||||
private void SetCameraEnabled(GameObject cameraObject, bool enabled)
|
||||
{
|
||||
if (cameraObject == null) return;
|
||||
var camera = cameraObject.GetComponent<Camera>();
|
||||
if (camera != null) camera.enabled = enabled;
|
||||
}
|
||||
|
||||
private System.Collections.IEnumerator SmoothSwitchCameraCoroutine()
|
||||
@@ -148,6 +199,7 @@ float duration = 1.0f;
|
||||
|
||||
cam3.transform.position = targetPos;
|
||||
cam3.transform.rotation = targetRot;
|
||||
_cameraSwitchRoutine = null;
|
||||
|
||||
Debug.Log("[AudioManager] camera2→camera3 平滑过渡完成");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user