如何在 Unity 中通过脚本访问我的 Bird 的底图组件?
How to access the Base Map Component of my Bird via script in Unity?
我在搅拌机中制作了我的小鸟动画,并将其导入到 Unity 中。我想通过脚本更改小鸟的颜色,以便我可以从设置面板更改它。
我注意到有一个 .png 文件附加到鸟网格 material 组件下的表面输入组件的底图。(已附上下面的屏幕截图)。如果我手动更改 .png 图片鸟的颜色随着我想要的相应颜色变化而变化。我想通过脚本更改它,所以我写了一个小脚本如下:
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”
我也尝试 运行 在附加到主鸟的脚本中使用它,但仍然得到相同的输出
我不知道我做错了什么。
"There is no 'MeshRenderer' attached to the "BirdMesh" game object,
but a script is trying to access it. You probably need to add a
MeshRenderer to the game object "BirdMesh"
正如错误消息所解释的那样,您尝试获取 MeshRenderer
component, but your object doesn't have a MeshRenderer
,因此您遇到了错误。
要解决这个问题,您只需获取实际附加到您的鸟身上的组件,在您的情况下就是 SkinnedMeshRenderer
.
示例:
void Start() {
SkinnedMeshRenderer skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer>();
skinnedMeshRenderer.material
.SetTexture("_BaseMap", Resources.Load<Texture2D>("BirdColorsPics/greenBird"));
}
我在搅拌机中制作了我的小鸟动画,并将其导入到 Unity 中。我想通过脚本更改小鸟的颜色,以便我可以从设置面板更改它。
我注意到有一个 .png 文件附加到鸟网格 material 组件下的表面输入组件的底图。(已附上下面的屏幕截图)。如果我手动更改 .png 图片鸟的颜色随着我想要的相应颜色变化而变化。我想通过脚本更改它,所以我写了一个小脚本如下:
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”
我也尝试 运行 在附加到主鸟的脚本中使用它,但仍然得到相同的输出
"There is no 'MeshRenderer' attached to the "BirdMesh" game object, but a script is trying to access it. You probably need to add a MeshRenderer to the game object "BirdMesh"
正如错误消息所解释的那样,您尝试获取 MeshRenderer
component, but your object doesn't have a MeshRenderer
,因此您遇到了错误。
要解决这个问题,您只需获取实际附加到您的鸟身上的组件,在您的情况下就是 SkinnedMeshRenderer
.
示例:
void Start() {
SkinnedMeshRenderer skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer>();
skinnedMeshRenderer.material
.SetTexture("_BaseMap", Resources.Load<Texture2D>("BirdColorsPics/greenBird"));
}