我正在尝试对gameObject(带有长矛的骨骼)的石头技巧效果,将其材质更改为石头,然后再改回以前的材质。
我感兴趣的是找回来。 gameObject有一些孩子。 在其中一些子项上是渲染器。 其中一些渲染器附加了不止一种材料。
我想要的是用于保存附加到这些渲染器的材质的代码,以及在石材效果结束后再次设置它们的代码……或类似的东西。
我尝试了很多次,但是没有得到完整的结果。
谢谢。
答案 0 :(得分:1)
您可以像开始一样简单地保存对原始材料的引用
Widget _gridView() {
return GridView.count(
crossAxisCount: 4,
padding: EdgeInsets.all(4.0),
childAspectRatio: 8.0 / 9.0,
children: itemList
.map(
(Item) => ItemList(item: Item),
)
.toList(),
);
}
现在,您已存储了每个 // Here we store the renderers
private Renderer[] _childRenderers;
// Here we store all materials of each renderer
private readonly Dictionary<Renderer, Material[]> _originalMaterials = new Dictionary<Renderer, Material[]>();
private void Awake()
{
// Get all Renderer components of this GameObject and any child
// of it (recursively)
_childRenderers = GetComponentsInChildren<Renderer>();
// For each renderer get the original materials
foreach (var childRenderer in _childRenderers)
{
_originalMaterials[childRenderer] = childRenderer.sharedMaterials;
}
}
的所有原始材料参考,可以通过以下方式重置它们:
Renderer