PackPlatforms.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. namespace Pack
  6. {
  7. [Serializable]
  8. public class PackPlatforms : ISerializationCallbackReceiver
  9. {
  10. [SerializeField]
  11. private PackPlatformAndroid[] androids;
  12. [SerializeField]
  13. private PackPlatformWeiDuanAndroid[] weiDuanAndroids;
  14. [SerializeField]
  15. private PackPlatformiOS[] iOSs;
  16. [SerializeField]
  17. private PackPlatformPC[] pCs;
  18. [SerializeField]
  19. private PackPlatformH5[] h5s;
  20. [NonSerialized]
  21. public PackPlatformBase[] packPlatforms;
  22. public void OnBeforeSerialize()
  23. {
  24. if (packPlatforms == null)
  25. {
  26. androids = null;
  27. iOSs = null;
  28. pCs = null;
  29. h5s = null;
  30. return;
  31. }
  32. List<PackPlatformAndroid> androidLs = new List<PackPlatformAndroid>();
  33. List<PackPlatformWeiDuanAndroid> weiDuanAndroidLs = new List<PackPlatformWeiDuanAndroid>();
  34. List<PackPlatformiOS> iOSLs = new List<PackPlatformiOS>();
  35. List<PackPlatformPC> pCLs = new List<PackPlatformPC>();
  36. List<PackPlatformH5> h5Ls = new List<PackPlatformH5>();
  37. for (int i = 0, iMax = packPlatforms.Length; i < iMax; i++)
  38. {
  39. PackPlatformBase packPlatformBase = packPlatforms[i];
  40. if (packPlatformBase is PackPlatformAndroid)
  41. {
  42. androidLs.Add(packPlatformBase as PackPlatformAndroid);
  43. }
  44. else if (packPlatformBase is PackPlatformWeiDuanAndroid)
  45. {
  46. weiDuanAndroidLs.Add(packPlatformBase as PackPlatformWeiDuanAndroid);
  47. }
  48. else if (packPlatformBase is PackPlatformiOS)
  49. {
  50. iOSLs.Add(packPlatformBase as PackPlatformiOS);
  51. }
  52. else if (packPlatformBase is PackPlatformPC)
  53. {
  54. pCLs.Add(packPlatformBase as PackPlatformPC);
  55. }
  56. else if (packPlatformBase is PackPlatformH5)
  57. {
  58. h5Ls.Add(packPlatformBase as PackPlatformH5);
  59. }
  60. else
  61. {
  62. Debug.LogErrorFormat("Not Support Type : {0} At Serialize", packPlatformBase.GetType().FullName);
  63. }
  64. }
  65. androids = androidLs.ToArray();
  66. weiDuanAndroids = weiDuanAndroidLs.ToArray();
  67. iOSs = iOSLs.ToArray();
  68. pCs = pCLs.ToArray();
  69. h5s = h5Ls.ToArray();
  70. }
  71. public void OnAfterDeserialize()
  72. {
  73. List<PackPlatformBase> packPlatformLs = new List<PackPlatformBase>();
  74. FormatPackPlatforms(ref packPlatformLs, androids);
  75. FormatPackPlatforms(ref packPlatformLs, weiDuanAndroids);
  76. FormatPackPlatforms(ref packPlatformLs, iOSs);
  77. FormatPackPlatforms(ref packPlatformLs, pCs);
  78. FormatPackPlatforms(ref packPlatformLs,h5s);
  79. packPlatforms = packPlatformLs.ToArray();
  80. }
  81. private void FormatPackPlatforms(ref List<PackPlatformBase> packPlatformLs, PackPlatformBase[] arr)
  82. {
  83. if (arr == null) return;
  84. if (packPlatformLs == null) packPlatformLs = new List<PackPlatformBase>();
  85. for (int i = 0, iMax = arr.Length; i < iMax; i++)
  86. {
  87. packPlatformLs.Add(arr[i]);
  88. }
  89. }
  90. }
  91. }