Unity UGUI Image共享材质

Unity UGUI Image共享材质

问题

当我们在Unity中创建了一个prefab,这个prefab包含的UGUI Image使用了一个自定义的材质,当我们创建出多个prefab示例,然后修改其中一个实例的材质参数,会发现其他使用同样材质的GameObject的参数也变了,显然这不符合我们的需求,所以需要重新设置下每一个实例化GameObject的材质对象,
在这里插入图片描述

解决问题的示例代码

在脚本中可以这么做:

glass = Resources.Load<GameObject>("prefab/Image");
glass = Instantiate<GameObject>(glass);
Material mat = new Material(glass.GetComponent<Image>().material);
glass.GetComponent<Image>().material = mat;  // 这里重新设置下材质参数

这样就可以该其中一个实例的材质参数,而不会影响到其他对象了,这是Unity的一个优化,共享同一个材质,减少内存的使用。

实际使用效果

在这里插入图片描述

动态图:
在这里插入图片描述

上图就是重新设置了材质之后的不同参数表现!

猜你喜欢

转载自blog.csdn.net/qq_41841073/article/details/128066537