var newmat = AssetDatabase.LoadAssetAtPath("Assets/Materials/Univeral Render Pipeline Lit.mat", typeof(Material));
object[] obj = FindObjectsOfType<Material>();
var allob = FindObjectsOfType<GameObject>();
foreach(object objs in obj)
{
var mat = (Material)objs;
if (mat.name.StartsWith("Default"))
{
defaultMaterials.Add((Material)objs);
}
}
我想为newmat分配mat。问题在于它只是材料,而不是这些材料的游戏对象。
此行将找到所有游戏对象:
var allob = FindObjectsOfType<GameObject>();
但是有超过5000个游戏对象,并且遍历所有对象可能很慢。也只有两个我要更改此默认材质的游戏对象。
我应该遍历所有游戏对象获取每种材料并找到默认材料,然后进行切换,或者有一种方法仅使用材料吗?
除了Jeff所说的:标记您的GameObjects,您还可以: