It has been asked, but I can't find the answer. As an example, I want to be able to find all the objects that use a material. The end of this script is what needs work; instead of that, I want to be able to use the up/down arrow keys to highlight the renderers.
And if you have a better solution for viewing the materials list, please let me know.
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
class MaterialUsersMenu : EditorWindow {
static Material material;
[MenuItem("Assets/List Scene Objects Using Material", true)] static bool Validate () {
material = Selection.activeObject as Material;
return material;
}
// 1011 is the earliest priority that results in a new menu section in all standard menus.
// This is undocumented, and may need to be changed in the future to assure proper placement in the menu.
[MenuItem ("Assets/List Scene Objects Using Material", false, 1011)] static void OpenWindow () {
GetWindow<MaterialUsersMenu>(true, "Game Objects using " + material.name, true);
}
static Vector2 scrollPosition;
void OnGUI () {
List<Renderer> renderers = new List<Renderer>();
foreach (Renderer renderer in Resources.FindObjectsOfTypeAll(typeof(Renderer)) )
if (renderer.sharedMaterial == material) renderers.Add(renderer);
// This is the best I have so far.
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
foreach (Renderer renderer in renderers) EditorGUILayout.ObjectField(renderer, typeof(Renderer));
EditorGUILayout.EndScrollView();
}
}
asked
Feb 27 '11 at 02:40 AM
Jessy
15.6k
●
72
●
95
●
196