备份CatanBuilding瘦身独立工程
This commit is contained in:
79
Assets/Scripts/EventWashing/Stuff/StuffAssembling.cs
Normal file
79
Assets/Scripts/EventWashing/Stuff/StuffAssembling.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user