using HighlightingSystem; using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXK.UTility; /******************************************************************************* *Create By CG *Function 场景中每个需要缺失的模型在添加时的控制脚本 *******************************************************************************/ namespace ZXK.BYSS { public class ItemModelCtrl : MonoBehaviour { [SerializeField] private string _typeName = null; //此零件应该对应的步骤名字 public string _ProcessName = null; public string[] _NeedToolsName = null; private List _curHighs = new List(); private List _mats = new List(); private void Awake() { if (EnumCtrl.GetEnumDescription(AppManagement.Instance._CurType).Equals(_typeName)) { transform.GetComponent().enabled = true; MeshRenderer[] matRenderers = gameObject.GetComponentsInChildren(); for (int i = 0; i < matRenderers.Length; i++) { for (int j = 0; j < matRenderers[i].materials.Length; j++) { Material mat = matRenderers[i].materials[j]; //修改本身材质球渲染模式 //if (mat.HasProperty("_AlphaClip") && mat.HasProperty("_ClipValue")) //{ // // 开启Alpha剪裁 // mat.EnableKeyword("_ALPHACLIP"); // // 设置剪裁阈值 // mat.SetFloat("_ClipValue", 0.5f); //} //mat.SetFloat("_Cutoff", 1f); //mat.SetFloat("_AlphaClip", 1f); //MaterialRenderingSetModeCtrl.SetTransparent(mat, true); //MaterialRenderingSetModeCtrl.SetMaterialRenderingMode(mat, MaterialRenderingSetModeCtrl.RenderingMode.Cutout); _mats.Add(mat); } OutLineRender matHigh; if (!matRenderers[i].TryGetComponent(out matHigh)) { //添加高亮脚本 matHigh = matRenderers[i].gameObject.AddComponent(); } matHigh.OutLineStrength = 2; matHigh.enabled = true; _curHighs.Add(matHigh); } DefaultAlphaState(); } else { Destroy(gameObject.GetComponent()); } } /// /// 默认透明状态 /// public void DefaultAlphaState() { for (int i = 0; i < _curHighs.Count; i++) { _curHighs[i].OutLineColor = Color.blue; } for (int i = 0; i < _mats.Count; i++) { Color tempColor = _mats[i].GetColor("_Color"); _mats[i].SetColor("_Color", new Color(tempColor.r, tempColor.g, tempColor.b, 0)); if (_mats[i].shader.name.Equals("Universal Render Pipeline/Lit")) { Color tempMapColor = _mats[i].GetColor("_BaseColor"); _mats[i].SetColor("_BaseColor", new Color(tempMapColor.r, tempMapColor.g, tempMapColor.b, 0)); } } } /// /// 悬浮状态 /// public void HoverState() { for (int i = 0; i < _curHighs.Count; i++) { _curHighs[i].OutLineColor = Color.yellow; } } /// /// 显示物体 /// public void ShowState() { for (int i = 0; i < _curHighs.Count; i++) { _curHighs[i].enabled = false; } for (int i = 0; i < _mats.Count; i++) { Color tempColor = _mats[i].GetColor("_Color"); _mats[i].SetColor("_Color", new Color(tempColor.r, tempColor.g, tempColor.b, 1)); if (_mats[i].shader.name.Equals("Universal Render Pipeline/Lit")) { Color tempMapColor = _mats[i].GetColor("_BaseColor"); _mats[i].SetColor("_BaseColor", new Color(tempMapColor.r, tempMapColor.g, tempMapColor.b, 1)); } } System.Array.ForEach(transform.GetComponents(), col => { col.enabled = false; }); //transform.GetComponents().enabled = false; } } }