I’ve tried to make it by instantiating a new Material object by doing like below:
foreach(Entity entity in myEntityQuery)
{
var originalRMA = EntityManager.GetSharedComponentManaged<RenderMeshArray>(entity);
if(originalRMA.Material == null)
{
Debug.Log("Material is null!");
return;
}
Debug.Log("Set!");
var newMaterial = new Material(originalRMA.Materials[0]);
newMaterial.color = myColor;
ecb.SetSharedComponentManaged(entity, new RenderMeshArray {
Materials = new Material[ ] { newMaterial },
Meshes = originalRMA.Meshes
});
}
my code produces no compile error, but if I run it, it logs “Set!” at first for all of my entities which are being queried as myEntityQuery in the script above, but after that, it logs “Material is null!” every frame.