首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只改变材料实例的属性?

只改变材料实例的属性?
EN

Stack Overflow用户
提问于 2021-04-18 13:58:56
回答 1查看 51关注 0票数 0

在我的代码中,我正在我的场景中创建一个RawImage的克隆。问题是,我只想更改附加到克隆的材料的属性,但是每当我这样做时,它就会自动更改标准材料的属性。这样,原始RawImage材料的性能就发生了变化。我已经考虑过这些解决办法了:

beforehand.

  • Create
  1. 创建多个预制材料
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-18 15:19:21

你的原始图像引用的是同样的材料。您需要创建它的一个新实例。我假设你是用手做的。我建议以编程的方式完成它--在实例化RawImage的新实例之后,您还为新映像创建了一个新的Material实例,它是原始图像的副本。

下面是一种扩展方法来实现这一点:

代码语言:javascript
复制
using UnityEngine;
using UnityEngine.UI;

public static class RawImageExtensions
{
    public static RawImage CloneWithMaterial(this RawImage target)
    {
        RawImage newInstance = Object.Instantiate(target, target.transform.parent);
        newInstance.material = new Material(newInstance.material);

        return newInstance;
    }
}

用法示例:

代码语言:javascript
复制
using UnityEngine;
using UnityEngine.UI;

public class RawImageTest : MonoBehaviour
{
    [SerializeField]
    private RawImage target = null;

    private void Start()
    {
        RawImage image = target.CloneWithMaterial();
        image.material.color = Color.black;

        image.transform.position = new Vector2(
            image.transform.position.x,
            image.transform.position.y - 50f);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67149401

复制
相关文章

相似问题

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