using GFMain; using HighlightPlus; using System.Collections; using System.Collections.Generic; using UnityCommon; using UnityEngine; namespace DTYJ { /// /// 模型高亮控制 /// public class HighlighterController : MonoSingleton { private List Highlights = new List(); HighlightProfile highlightProfile; private void Awake() { MainEntry.Resource.LoadAsset("Assets/_DTYJ/_Project/Res/Effects/Highlight_equipment.asset", typeof(HighlightProfile), new GameFramework.Resource.LoadAssetCallbacks((assetName, asset, duration, userData) => { highlightProfile = asset as HighlightProfile; })); } /// /// 打开高亮 /// /// public void HighlightOn(GameObject goTarget) { var h = goTarget.GetOrAddComponent(); h.ProfileLoad(highlightProfile); h.highlighted = true; Highlights.Add(goTarget); } /// /// 关闭高亮 /// /// public void HighlightOff(GameObject goTarget) { if (highlightConst.Contains(goTarget)) return; _HighlightOff(goTarget); Highlights.Remove(goTarget); } private void _HighlightOff(GameObject goTarget) { var h = goTarget.GetComponent(); if (h != null) { h.highlighted = false; DestroyImmediate(h); } } /// /// 关闭所有高亮 /// public void ClearAllHighlights() { foreach (var item in Highlights) { _HighlightOff(item); } Highlights.Clear(); } List highlightConst = new List(); public void HighlightOn_const(GameObject goTarget) { highlightConst.Add(goTarget); HighlightOn(goTarget); } public void HighlightOff_const(GameObject goTarget) { if (highlightConst.Contains(goTarget)) highlightConst.Remove(goTarget); HighlightOff(goTarget); } } }