将GameObject材质更改回原始材质

时间:2018-11-01 22:27:42

标签: unity3d

我正在尝试对gameObject(带有长矛的骨骼)的石头技巧效果,将其材质更改为石头,然后再改回以前的材质。

我感兴趣的是找回来。 gameObject有一些孩子。 在其中一些子项上是渲染器。 其中一些渲染器附加了不止一种材料。

我想要的是用于保存附加到这些渲染器的材质的代码,以及在石材效果结束后再次设置它们的代码……或类似的东西。

我尝试了很多次,但是没有得到完整的结果。

谢谢。

1 个答案:

答案 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