我试图在gameObject (一具带长矛的骨骼)上产生石术效果,把它的材料换成石头,然后再换回以前的。
我感兴趣的是找回来的零钱。gameObject有一些孩子和孩子的孩子。在这些孩子中,有些是渲染者。其中一些渲染器有多个附加材料。
我想要的是保存这些渲染器附加的材料的代码,以及在石头效应ends....or之后重新设置它们的代码,类似的东西。
我试了很多次,但没有得到一个完整的结果。
谢谢。
发布于 2018-11-02 06:43:48
您可以简单地在开始时保存对原始材料的引用,例如
// 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的原始材料进行所有引用,并可以通过
public void ResetMaterials()
{
foreach (var childRenderer in _childRenderers)
{
childRenderer.materials = _originalMaterials[childRenderer];
}
}https://stackoverflow.com/questions/53110265
复制相似问题