public static GraphicMaterialSource GetMaterialSource(UnityEngine.UI.Graphic graphic) { using (var lst = TempCollection.GetList <GraphicMaterialSource>()) { graphic.GetComponents <GraphicMaterialSource>(lst); for (int i = 0; i < lst.Count; i++) { if (lst[i]._graphics == graphic) { return(lst[i]); } } } var source = graphic.gameObject.AddComponent <GraphicMaterialSource>(); source._graphics = graphic; return(source); }