1

目标

我创建了一个在材质“TestMaterial”中使用的着色器图。我有一个带有默认材质属性的精灵渲染器组件的游戏对象。

在运行时,当用户单击一个简单的按钮时,我想用我的新材质“TestMaterial”更改我的游戏对象 > Sprite 渲染器 > 材质属性“默认”。

语境

我使用通用渲染管道和 Unity 2019.4.12.f1。在我使用功能编辑 > 渲染管道 > 通用渲染管道 > 2D 渲染器 > 将项目更新为 2d 渲染器之前,我的代码运行良好。

我所做的测试 我 的“TestMaterial”在编辑器中运行良好,当我的游戏对象直接使用此材料时,在运行时也是如此。“TestMaterial”只有在我更新脚本中的材料时才起作用,我的游戏对象保留旧的默认材料。

代码

[SerializeField] Material testMaterial;
[SerializeField] Material defaultMaterial;

public void UpdateToDefaultMaterial()
{
   this.gameObject.GetComponent<SpriteRenderer>().material = defaultMaterial;
}

public void UpdateToTestMaterial()
{
   this.gameObject.GetComponent<SpriteRenderer>().material = testMaterial;
}

截图 Unity 编辑器

4

2 回答 2

0

好的,我使用带有循环动画的动画师解决了我的问题,我在其中更改了材质:

GameObject Sprite 渲染器组件

我更新材料的动画

我仍然不知道为什么我的动画有效而不是我的代码,但它可以完成工作......如果有人找到我的文化的答案,我会很高兴......

谢谢

于 2021-04-07T13:37:28.337 回答
0
  1. 确保您可以在编辑器中正确替换它
  2. 我不认为精灵编辑器可以使用材质。使用不同类型的物体将材料放在上面
于 2021-04-07T07:04:33.293 回答