首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GameObject材料改为原始材料

将GameObject材料改为原始材料
EN

Stack Overflow用户
提问于 2018-11-01 22:27:41
回答 1查看 68关注 0票数 0

我试图在gameObject (一具带长矛的骨骼)上产生石术效果,把它的材料换成石头,然后再换回以前的。

我感兴趣的是找回来的零钱。gameObject有一些孩子和孩子的孩子。在这些孩子中,有些是渲染者。其中一些渲染器有多个附加材料。

我想要的是保存这些渲染器附加的材料的代码,以及在石头效应ends....or之后重新设置它们的代码,类似的东西。

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-02 06:43:48

您可以简单地在开始时保存对原始材料的引用,例如

代码语言:javascript
复制
 // 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的原始材料进行所有引用,并可以通过

代码语言:javascript
复制
public void ResetMaterials()
{
    foreach (var childRenderer in _childRenderers)
    {
        childRenderer.materials = _originalMaterials[childRenderer];
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53110265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档