123 lines
4.8 KiB
C#
123 lines
4.8 KiB
C#
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<OutLineRender> _curHighs = new List<OutLineRender>();
|
|
private List<Material> _mats = new List<Material>();
|
|
|
|
private void Awake()
|
|
{
|
|
|
|
if (EnumCtrl.GetEnumDescription(AppManagement.Instance._CurType).Equals(_typeName))
|
|
{
|
|
transform.GetComponent<Collider>().enabled = true;
|
|
MeshRenderer[] matRenderers = gameObject.GetComponentsInChildren<MeshRenderer>();
|
|
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<OutLineRender>(out matHigh))
|
|
{
|
|
//添加高亮脚本
|
|
matHigh = matRenderers[i].gameObject.AddComponent<OutLineRender>();
|
|
}
|
|
matHigh.OutLineStrength = 2;
|
|
matHigh.enabled = true;
|
|
_curHighs.Add(matHigh);
|
|
|
|
}
|
|
DefaultAlphaState();
|
|
}
|
|
else
|
|
{
|
|
Destroy(gameObject.GetComponent<Collider>());
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 默认透明状态
|
|
/// </summary>
|
|
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));
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 悬浮状态
|
|
/// </summary>
|
|
public void HoverState()
|
|
{
|
|
for (int i = 0; i < _curHighs.Count; i++)
|
|
{
|
|
|
|
_curHighs[i].OutLineColor = Color.yellow;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 显示物体
|
|
/// </summary>
|
|
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<Collider>(), col => { col.enabled = false; });
|
|
//transform.GetComponents<Collider>().enabled = false;
|
|
}
|
|
}
|
|
} |