LocalizeTarget_UnityStandard_AudioSource.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using UnityEditor;
  2. using UnityEngine;
  3. namespace I2.Loc
  4. {
  5. #if UNITY_EDITOR
  6. [InitializeOnLoad]
  7. #endif
  8. public class LocalizeTarget_UnityStandard_AudioSource : LocalizeTarget<AudioSource>
  9. {
  10. static LocalizeTarget_UnityStandard_AudioSource() { AutoRegister(); }
  11. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void AutoRegister() { LocalizationManager.RegisterTarget(new LocalizeTargetDesc_Type<AudioSource, LocalizeTarget_UnityStandard_AudioSource> { Name = "AudioSource", Priority = 100 }); }
  12. public override eTermType GetPrimaryTermType(Localize cmp) { return eTermType.AudioClip; }
  13. public override eTermType GetSecondaryTermType(Localize cmp) { return eTermType.Text; }
  14. public override bool CanUseSecondaryTerm() { return false; }
  15. public override bool AllowMainTermToBeRTL() { return false; }
  16. public override bool AllowSecondTermToBeRTL() { return false; }
  17. public override void GetFinalTerms ( Localize cmp, string Main, string Secondary, out string primaryTerm, out string secondaryTerm)
  18. {
  19. AudioClip clip = mTarget.clip;
  20. primaryTerm = clip ? clip.name : string.Empty;
  21. secondaryTerm = null;
  22. }
  23. public override void DoLocalize(Localize cmp, string mainTranslation, string secondaryTranslation)
  24. {
  25. bool bIsPlaying = (mTarget.isPlaying || mTarget.loop) && Application.isPlaying;
  26. AudioClip OldClip = mTarget.clip;
  27. AudioClip NewClip = cmp.FindTranslatedObject<AudioClip>(mainTranslation);
  28. if (OldClip != NewClip)
  29. mTarget.clip = NewClip;
  30. if (bIsPlaying && mTarget.clip)
  31. mTarget.Play();
  32. // If the old clip is not in the translatedObjects, then unload it as it most likely was loaded from Resources
  33. //if (!HasTranslatedObject(OldClip))
  34. // Resources.UnloadAsset(OldClip);
  35. }
  36. }
  37. }