微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity 无法在运行时通过脚本更改材质

如何解决Unity 无法在运行时通过脚本更改材质

目标

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

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

背景

我使用通用渲染管线和 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 Editor

解决方法

  1. 确保您可以在编辑器中正确替换它
  2. 我不认为精灵编辑器可以使用材料。使用不同种类的物体来放置材料
,

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

GameObject Sprite renderer Component

Animation where I update material

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

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。