LocalizationParamsManager.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using UnityEngine;
  2. using System;
  3. using System.Collections.Generic;
  4. namespace I2.Loc
  5. {
  6. public interface ILocalizationParamsManager
  7. {
  8. string GetParameterValue( string Param );
  9. }
  10. public class LocalizationParamsManager : MonoBehaviour, ILocalizationParamsManager
  11. {
  12. [Serializable]
  13. public struct ParamValue
  14. {
  15. public string Name, Value;
  16. }
  17. [SerializeField]
  18. public List<ParamValue> _Params = new List<ParamValue>();
  19. public bool _IsGlobalManager;
  20. public string GetParameterValue( string ParamName )
  21. {
  22. if (_Params != null)
  23. {
  24. for (int i = 0, imax = _Params.Count; i < imax; ++i)
  25. if (_Params[i].Name == ParamName)
  26. return _Params[i].Value;
  27. }
  28. return null; // not found
  29. }
  30. public void SetParameterValue( string ParamName, string ParamValue, bool localize = true )
  31. {
  32. bool setted = false;
  33. for (int i = 0, imax = _Params.Count; i < imax; ++i)
  34. if (_Params[i].Name == ParamName)
  35. {
  36. var temp = _Params[i];
  37. temp.Value = ParamValue;
  38. _Params[i] = temp;
  39. setted = true;
  40. break;
  41. }
  42. if (!setted)
  43. _Params.Add(new ParamValue(){ Name = ParamName, Value = ParamValue });
  44. if (localize)
  45. OnLocalize();
  46. }
  47. public void OnLocalize()
  48. {
  49. var loc = GetComponent<Localize>();
  50. if (loc != null)
  51. loc.OnLocalize(true);
  52. }
  53. public virtual void OnEnable()
  54. {
  55. if (_IsGlobalManager)
  56. DoAutoRegister();
  57. }
  58. //[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
  59. //public void AutoStart()
  60. //{
  61. // if (_AutoRegister)
  62. // DoAutoRegister();
  63. //}
  64. public void DoAutoRegister()
  65. {
  66. if (!LocalizationManager.ParamManagers.Contains(this))
  67. {
  68. LocalizationManager.ParamManagers.Add(this);
  69. LocalizationManager.LocalizeAll(true);
  70. }
  71. }
  72. public void OnDisable()
  73. {
  74. LocalizationManager.ParamManagers.Remove(this);
  75. }
  76. }
  77. }