| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using QFramework;
- public enum ShowState
- {
- Hide,
- Tran
- }
- public class PartMark : MonoBehaviour
- {
- public List<PartMark> m_ChildPartMarks;
- public Dictionary<MeshRenderer, Material> m_DicOldMeshRender;
- /// <summary>
- /// 目前状态
- /// </summary>
- private bool m_CurrentState;
- private void Awake()
- {
- m_ChildPartMarks = new List<PartMark>();
- m_DicOldMeshRender = new Dictionary<MeshRenderer, Material>();
- InitData();
- AddMeshColliders();
- }
- public void AddMeshColliders()
- {
- MeshRenderer[] meshRenderers = GetComponentsInChildren<MeshRenderer>();
- foreach (var item in meshRenderers)
- {
- if (item.GetComponent<MeshCollider>() == null)
- {
- item.gameObject.AddComponent<MeshCollider>();
- }
- }
- }
- public void SetState(bool state)
- {
- PartListPanel tmpPartListPanel = UIKit.GetPanel<PartListPanel>();
- SetInitState();
-
- if (tmpPartListPanel.m_ShowState == ShowState.Tran)
- {
- this.gameObject.SetActive(true);
- if (!state)
- {
- Material tmpMaterial = Resources.Load<Material>("Trans");
- foreach (var item in m_DicOldMeshRender)
- {
- item.Key.material = tmpMaterial;
- }
- }else
- {
- foreach (var item in m_DicOldMeshRender)
- {
- item.Key.material = item.Value;
- }
- }
- }
- else
- {
- this.gameObject.SetActive(state);
- }
- m_CurrentState = state;
- }
- public void RefreshState()
- {
- SetInitState();
- if (!m_CurrentState)
- {
- PartListPanel tmpPartListPanel = UIKit.GetPanel<PartListPanel>();
- if (tmpPartListPanel.CheckDropdown.captionText.text == "部件半透")
- {
- Material tmpMaterial = Resources.Load<Material>("Trans");
- foreach (var item in m_DicOldMeshRender)
- {
- item.Key.material = tmpMaterial;
- }
- }
- else
- {
- this.gameObject.SetActive(false);
- }
- }
- }
- public void InitData()
- {
- MeshRenderer tmpSelfMeshRender = transform.GetComponent<MeshRenderer>();
- if (tmpSelfMeshRender != null) m_DicOldMeshRender.Add(tmpSelfMeshRender, tmpSelfMeshRender.material);
- for (int i = 0; i < transform.childCount; i++)
- {
- Transform tmpChild = transform.GetChild(i);
- if (tmpChild.GetComponent<PartMark>() != null)
- {
- m_ChildPartMarks.Add(tmpChild.GetComponent<PartMark>());
- }
- else
- {
- MeshRenderer tmpMeshRender = tmpChild.GetComponent<MeshRenderer>();
- if (tmpMeshRender != null) m_DicOldMeshRender.Add(tmpMeshRender, tmpMeshRender.material);
- }
- }
- }
- public void SetInitState()
- {
- foreach (var item in m_DicOldMeshRender)
- {
- item.Key.material = item.Value;
- }
- this.gameObject.SetActive(true);
- }
- public List<MeshRenderer> GetMeshRender()
- {
- List<MeshRenderer> tmpMeshRenders = new List<MeshRenderer>();
- if (m_CurrentState)
- {
- if (transform.GetComponent<MeshRenderer>() != null) tmpMeshRenders.Add(transform.GetComponent<MeshRenderer>());
- for (int i = 0; i < transform.childCount; i++)
- {
- Transform tmpChild = transform.GetChild(i);
- if (tmpChild.GetComponent<PartMark>() == null && tmpChild.GetComponent<MeshRenderer>() != null)
- {
- tmpMeshRenders.Add(tmpChild.GetComponent<MeshRenderer>());
- }
-
- }
- }
- return tmpMeshRenders;
- }
- }
|