unityzgy/.svn/pristine/d6/d621457d85e52f7af8661594caaca8c6462df6de.svn-base
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

143 lines
4.2 KiB
Plaintext

using UnityEngine;
using System.Collections;
public class EnviroAudioSource : MonoBehaviour {
public enum AudioSourceFunction
{
Weather1,
Weather2,
Ambient,
Ambient2,
Thunder,
ZoneAmbient
}
public AudioSourceFunction myFunction;
public AudioSource audiosrc;
public bool isFadingIn = false;
public bool isFadingOut = false;
float currentAmbientVolume;
float currentWeatherVolume;
float currentZoneVolume;
void Start ()
{
if (EnviroSkyMgr.instance == null)
{
Debug.Log("EnviroSky Manager not found. Deactivate enviro AudioSource");
this.enabled = false;
return;
}
if (audiosrc == null)
audiosrc = GetComponent<AudioSource> ();
if (myFunction == AudioSourceFunction.Weather1 || myFunction == AudioSourceFunction.Weather2)
{
audiosrc.loop = true;
audiosrc.volume = 0f;
}
currentAmbientVolume = EnviroSkyMgr.instance.ambientAudioVolume;
currentWeatherVolume = EnviroSkyMgr.instance.weatherAudioVolume;
}
public void FadeOut ()
{
isFadingOut = true;
isFadingIn = false;
}
public void FadeIn (AudioClip clip)
{
isFadingIn = true;
isFadingOut = false;
audiosrc.clip = clip;
audiosrc.Play ();
}
public void PlayOneShot(AudioClip clip)
{
audiosrc.loop = false;
audiosrc.clip = clip;
audiosrc.Play();
}
void Update ()
{
if (EnviroSkyMgr.instance == null && !EnviroSkyMgr.instance.IsStarted())
return;
currentAmbientVolume = Mathf.Lerp(currentAmbientVolume, EnviroSkyMgr.instance.ambientAudioVolume + EnviroSkyMgr.instance.ambientAudioVolumeModifier, 10f * Time.deltaTime);
currentWeatherVolume = Mathf.Lerp(currentWeatherVolume, EnviroSkyMgr.instance.weatherAudioVolume + EnviroSkyMgr.instance.weatherAudioVolumeModifier, 10 * Time.deltaTime);
if (myFunction == AudioSourceFunction.Weather1 || myFunction == AudioSourceFunction.Weather2 || myFunction == AudioSourceFunction.Thunder){
if (isFadingIn && audiosrc.volume < currentWeatherVolume) {
audiosrc.volume += EnviroSkyMgr.instance.audioTransitionSpeed * Time.deltaTime;
} else if (isFadingIn && audiosrc.volume >= currentWeatherVolume - 0.01f) {
isFadingIn = false;
}
if (isFadingOut && audiosrc.volume > 0f) {
audiosrc.volume -= EnviroSkyMgr.instance.audioTransitionSpeed * Time.deltaTime;
} else if (isFadingOut && audiosrc.volume == 0f) {
audiosrc.Stop ();
isFadingOut = false;
}
if (audiosrc.isPlaying && !isFadingOut && !isFadingIn) {
audiosrc.volume = currentWeatherVolume;
}
}
else if (myFunction == AudioSourceFunction.Ambient || myFunction == AudioSourceFunction.Ambient2)
{
if (isFadingIn && audiosrc.volume < currentAmbientVolume) {
audiosrc.volume += EnviroSkyMgr.instance.audioTransitionSpeed * Time.deltaTime;
} else if (isFadingIn && audiosrc.volume >= currentAmbientVolume - 0.01f) {
isFadingIn = false;
}
if (isFadingOut && audiosrc.volume > 0f) {
audiosrc.volume -= EnviroSkyMgr.instance.audioTransitionSpeed * Time.deltaTime;
} else if (isFadingOut && audiosrc.volume == 0f) {
audiosrc.Stop ();
isFadingOut = false;
}
if (audiosrc.isPlaying && !isFadingOut && !isFadingIn) {
audiosrc.volume = currentAmbientVolume;
}
}
else if (myFunction == AudioSourceFunction.ZoneAmbient)
{
if (isFadingIn && audiosrc.volume < EnviroSkyMgr.instance.interiorZoneAudioVolume)
{
audiosrc.volume += EnviroSkyMgr.instance.interiorZoneAudioFadingSpeed * Time.deltaTime;
}
else if (isFadingIn && audiosrc.volume >= EnviroSkyMgr.instance.interiorZoneAudioVolume - 0.01f)
{
isFadingIn = false;
}
if (isFadingOut && audiosrc.volume > 0f)
{
audiosrc.volume -= EnviroSkyMgr.instance.interiorZoneAudioFadingSpeed * Time.deltaTime;
}
else if (isFadingOut && audiosrc.volume == 0f)
{
audiosrc.Stop();
isFadingOut = false;
}
if (audiosrc.isPlaying && !isFadingOut && !isFadingIn)
{
audiosrc.volume = EnviroSkyMgr.instance.interiorZoneAudioVolume;
}
}
}
}