如何在运行时更改预制件实例的颜色?

How to change color of the instance of a prefab in runtime?

我在运行时更改预制对象的颜色时遇到问题。

问题是预制件是由一个游戏对象组成的,里面是立方体。因此,当您从运行时实例化对象时,不允许您更改颜色。如何识别创建的对象并更改其颜色或任何其他颜色属性?

这里是错误图片:

这是我的项目存储库(分支开发):https://github.com/emicalvacho/MapaMentalAR

Therefore, when you instance the object from runtime does not allow you to change the color

是的.. 实例化时只需存储引用即可。从您在控制台中的异常可以看出您(不小心?)正在尝试更改预制件本身的颜色 - 而不是刚刚创建的实例。

var instance = Instantiate(prefab, position, rotation);
var objRenderer = instance.GetComponentInChildren<Renderer>(true);
objRenderer.material.color = Color.blue;

您的脚本中似乎引用了预制件而不是实例化对象。

你根本做不到。 您可以使用不同颜色的单独预制件,或者在将 material 实例化为所需颜色后更改 material。

在运行时创建游戏对象后,您无法直接访问它的属性 如果你想改变创建运行时的立方体的颜色首先你需要一个名为 meshRenderer 的组件然后你可以选择那个 meshRenderer 的 material 然后得到一个 material 你可以改变它的颜色.

GameObject obj  = Instantiate(cubePrefab, position, rotation));
obj.GetComponentInChildren<MeshRenderer>().material.color = Color.Red;