当使用c#脚本更改预制件的颜色时,它会显示在检查器中,但不会显示在游戏视图中

当使用c#脚本更改预制件的颜色时,它会显示在检查器中,但不会显示在游戏视图中,c#,unity3d,C#,Unity3d,我想在运行时创建一个预置,并能够为其指定颜色。当我的预制件是一个简单的圆柱体时,这一切都可以使用: var renderer = new_c.GetComponent<MeshRenderer>(); renderer.material.color = Color.green; var renderer=new_c.GetComponent(); renderer.material.color=color.green; 但是,当我尝试使用我的箭头预设(导入的对象)时,颜色会显示在

我想在运行时创建一个预置,并能够为其指定颜色。当我的预制件是一个简单的圆柱体时,这一切都可以使用:

var renderer = new_c.GetComponent<MeshRenderer>();
renderer.material.color = Color.green;
var renderer=new_c.GetComponent();
renderer.material.color=color.green;
但是,当我尝试使用我的箭头预设(导入的对象)时,颜色会显示在检查器中,但不会显示在预设实例的游戏视图中

我认为这可能与以下事实有关:在层次结构中,箭头的身体是预制的孩子,但我不确定? 我试着打电话:

new_c.GetComponentInChildren<GameObject>().GetComponent<MeshRenderer>().material.color = Color.green;

new_c.GetComponent<Renderer>().material.SetColor("_Color", Color.green);

GetCompentsInChildren<Meshrenderer>.material.SetColor("_Color", Color.green);
new_c.getComponentChildren().GetComponent().material.color=color.green;
新建_c.GetComponent().material.SetColor(“_Color”,Color.green);
getcompensitchildren.material.SetColor(“\u Color”,Color.green);
但大多数时候它仍然不起作用。 有时它工作,箭头是绿色的,有时它保持默认材质的颜色。我似乎找不到有效和无效实例之间的任何区别, 这一整天都让我发疯,任何建议都将不胜感激

我预计箭头会变成绿色,但它只是有时会变成绿色,我没有收到错误消息,检查员说材质是绿色的,但在游戏视图和场景视图中不是


经过几天的搜索,终于找到了它! 多亏了

因为arrows主体是arrow模型的子对象,而arrow模型是实际arrow预置的子对象,所以我必须对该对象调用两次
GetChild(0)
——由于某种原因
getComponentChildren
不起作用,所以我认为这不是问题所在

这是修复它的代码行:

new_c.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material.color = Color.yellow;
new_c.transform.GetChild(0).GetChild(0).GetComponent().material.color=color.yellow;

您使用的是烘焙照明还是实时照明?在场景模式下是实时照明,但在游戏模式下使用的是AR(Vuforia),因此我没有在场景中包含任何其他照明