Files
2026-05-26 16:15:54 +08:00

80 lines
2.3 KiB
C#

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<List<Material>> m_BackupMaterials = new List<List<Material>>();
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<Material> list = new List<Material>();
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
}
}