using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace game { public class StuffAssembling : LongPressStuffBase { [Tooltip("空置时所需材质球")] public Material m_UnoccupiedMaterial; #region 材质球处理相关 private List> m_BackupMaterials = new List>(); public void SwitchUnoccupiedMaterial() { if (m_UnoccupiedMaterial == null || m_Renderers == null) return; int count = m_Renderers.Length; for (int i = 0; i < count; i++) { var renderer = m_Renderers[i]; var materials = renderer.sharedMaterials.ToList(); // 备份原始材质球 List list = new List(); int tmpCount = materials.Count; for (int j = 0; j < tmpCount; j++) { list.Add(materials[j]); } m_BackupMaterials.Add(list); // 清空材质球 materials.Clear(); // 替换空置材质球 materials.Add(m_UnoccupiedMaterial); renderer.materials = materials.ToArray(); } } public void RestoreMaterial() { if (m_Renderers == null) return; int count = m_Renderers.Length; for (int i = 0; i < count; i++) { var renderer = m_Renderers[i]; var materials = renderer.sharedMaterials.ToList(); // 清空材质球 materials.Clear(); var list = m_BackupMaterials[i]; int tmpCount = list.Count; // 换回备份材质球 for(int j = 0;j < tmpCount; j++) { materials.Add((Material)list[j]); } renderer.materials = materials.ToArray(); } } #endregion #region 生命周期 public override void InitStuff() { base.InitStuff(); m_Type = EventWashingStuffType.Assembling; SwitchUnoccupiedMaterial(); } #endregion } }