OutLineManager.cs 2.2 KB

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