c# - 如何通过 Unity 中的脚本访问我的 Bird 的 Base Map 组件?
问题描述
我在搅拌机中为我的鸟设置了动画,并将其导入到 Unity。我想通过脚本更改鸟的颜色,以便可以从设置面板更改它。
我注意到有一个 .png 文件附加到鸟网格的材质组件下的表面输入组件的 Base Map。(附上下面的屏幕截图)。如果我手动更改 .png pic 鸟的颜色随着我想要的颜色变化而变化。我想通过脚本来改变它,所以我写了一个小脚本如下:
public class BirdMeshColor : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
meshRenderer.material.SetTexture("_BaseMap", Resources.Load<Texture2D>("BirdColorsPics/greenBird.png"));
}
}
但我得到一个错误说
“没有'MeshRenderer'附加到“BirdMesh”游戏对象,但脚本正在尝试访问它。您可能需要将MeshRenderer添加到游戏对象“BirdMesh”
解决方案
“没有'MeshRenderer'附加到“BirdMesh”游戏对象,但脚本正在尝试访问它。您可能需要将MeshRenderer添加到游戏对象“BirdMesh”
正如错误消息所解释的,您尝试获取MeshRenderer
组件,但您的对象没有MeshRenderer
,因此您收到错误消息。
要解决这个问题,您可以简单地获取实际附加到您的鸟的组件,在您的情况下将是SkinnedMeshRenderer
.
例子:
void Start() {
SkinnedMeshRenderer skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer>();
skinnedMeshRenderer.material
.SetTexture("_BaseMap", Resources.Load<Texture2D>("BirdColorsPics/greenBird"));
}
推荐阅读
- php - 带有修改的 php 模糊电子邮件地址
- prometheus - 将流入百分位函数转换为 promQL
- python - 如何删除 CSV 特定行。(如 user_name = Max)
- python - 在未排序的列表中查找值
- rust - 具有相同分隔符的并排宏重复
- javascript - 你应该如何在 JavaScript 中实例化一个对象?
- swiftui - 在 SwiftUI TextEditor 中禁用标点符号的自动替换
- azure - GitHub Azure-pipelines check failure (Build #20210302.1 failed)
- python - How to use Python to asynchronously receive the stream data returned by the api
- python - join two columns of different dataframes into another dataframe