Beispiel #1
0
        private void Up(List <Image> list)
        {
            foreach (Image image in list)
            {
                string path = AssetDatabase.GetAssetPath(image);
                if (image.sprite == null)
                {
                    Debug.Log("IM:" + image.gameObject.name + " ptath:" + path + " null");
                    continue;
                }
                Debug.Log("IM:" + image.gameObject.name + " ptath:" + path);

                ImageMaterialAssigner assigner = instance;

                if (!instance.imageMaterialAssigners.IsNullOrEmpty())
                {
                    assigner = instance.FindImageMaterialAssigner(image.sprite);
                }


                Material m = instance.FindMaterial(image.sprite, assigner);
                if (m != null)
                {
                    image.material = m;
                }
                EditorUtility.SetDirty(image.gameObject);
            }
        }
Beispiel #2
0
        public override void OnInspectorGUI()
        {
            GUILayoutOption option = GUILayout.Width(300f);

            DrawDefaultInspector();
            ImageMaterialAssigner instance = target as ImageMaterialAssigner;


            if (GUILayout.Button("Execute_Image", option))
            {
                Debug.Log("EXECUTE");
                foreach (string p in EditorBuildSettings.scenes.Select(s => s.path))
                {
                    EditorSceneManager.OpenScene(p, OpenSceneMode.Additive);
                }

                List <Image> list = Resources.FindObjectsOfTypeAll <Image>().ToList();
                //                list.addran= UnityEngine.Object.FindObjectsOfType<Image>().ToList();
                Debug.Log("COUNT:" + list.Count);
                foreach (string assetPath in AssetDatabase.GetAllAssetPaths())
                {
                    foreach (Image image in AssetDatabase.LoadAllAssetsAtPath(assetPath).Where(p => p as Image)
                             .Where(a => a != null).Select(r => r as Image))
                    {
                        list.Add(image);
                    }
                }

                Up(list);
                EditorSceneManager.MarkAllScenesDirty();
            }

            if (GUILayout.Button("Execute_SpriteRenderer", option))
            {
                Debug.Log("EXECUTE");
                foreach (string p in EditorBuildSettings.scenes.Select(s => s.path))
                {
                    EditorSceneManager.OpenScene(p, OpenSceneMode.Additive);
                }

                List <SpriteRenderer> slist = Resources.FindObjectsOfTypeAll <SpriteRenderer>().ToList();
                foreach (string assetPath in AssetDatabase.GetAllAssetPaths())
                {
                    foreach (SpriteRenderer image in AssetDatabase.LoadAllAssetsAtPath(assetPath).Where(p => p as SpriteRenderer)
                             .Where(a => a != null).Select(r => r as SpriteRenderer))
                    {
                        slist.Add(image);
                    }
                }

                Up(slist);
                EditorSceneManager.MarkAllScenesDirty();
            }
        }
Beispiel #3
0
    public Material FindMaterial(Sprite sprite, ImageMaterialAssigner assigner = null)
    {
        if (assigner == null)
        {
            assigner = this;
        }

        SpriteReference r = assigner.spriteReferenceList.FirstOrDefault(rr => rr.sprites.Contains(sprite));

        if (r == null)
        {
            return(null);
        }

        int index = assigner.spriteReferenceList.IndexOf(r);

        return(assigner.materialList[index]);
    }