OutLineManager.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using EPOOutline;
  2. using QFramework;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public enum OutLineType
  8. {
  9. hover, //划过
  10. select,//选中
  11. hint, //提示
  12. }
  13. public class OutLineManager : MonoSingleton<OutLineManager>
  14. {
  15. private OutLinePrefabGroup outLinePrefabGroup;
  16. public OutLinePrefabGroup OutLinePrefabGroup
  17. {
  18. get
  19. {
  20. if (outLinePrefabGroup == null)
  21. {
  22. outLinePrefabGroup = Resources.Load<OutLinePrefabGroup>("OutLinablePrefab");
  23. }
  24. return outLinePrefabGroup;
  25. }
  26. }
  27. void Awake()
  28. {
  29. if (Camera.main != null && Camera.main.GetComponent<Outliner>() == null)
  30. {
  31. Camera.main.gameObject.AddComponent<Outliner>();
  32. }
  33. Camera.main.GetComponent<Outliner>().DilateIterations = 0;
  34. }
  35. public void ResetOutLinableByType(Outlinable outlinable, OutLineType type)
  36. {
  37. Outlinable prefab = GetOutLinablePrefan(type);
  38. //outlinable.AddAllChildRenderersToRenderingList();
  39. outlinable.ComplexMaskingMode = prefab.ComplexMaskingMode;
  40. outlinable.DrawingMode = prefab.DrawingMode;
  41. outlinable.OutlineLayer = prefab.OutlineLayer;
  42. outlinable.RenderStyle = prefab.RenderStyle;
  43. outlinable.BackParameters.DilateShift = prefab.BackParameters.DilateShift;
  44. outlinable.BackParameters.BlurShift = prefab.BackParameters.BlurShift;
  45. outlinable.BackParameters.Color = prefab.BackParameters.Color;
  46. outlinable.BackParameters.SetFillPass(prefab.BackParameters.FillPass);
  47. outlinable.FrontParameters.DilateShift = prefab.FrontParameters.DilateShift;
  48. outlinable.FrontParameters.BlurShift = prefab.FrontParameters.BlurShift;
  49. outlinable.FrontParameters.Color = prefab.FrontParameters.Color;
  50. outlinable.FrontParameters.SetFillPass(prefab.FrontParameters.FillPass);
  51. }
  52. public Outlinable GetOutLinablePrefan(OutLineType type)
  53. {
  54. if (OutLinePrefabGroup.dic_OutLinePrefabs.ContainsKey(type))
  55. {
  56. return OutLinePrefabGroup.dic_OutLinePrefabs[type];
  57. }
  58. return null;
  59. }
  60. void OnDestroy()
  61. {
  62. if (outLinePrefabGroup != null)
  63. {
  64. Destroy(outLinePrefabGroup);
  65. }
  66. }
  67. }