public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { GameObjectTagFilterAttribute tagFilterAttribute = attribute as GameObjectTagFilterAttribute; if (null == _gameObjectsArr) { _gameObjectsArr = FindGameObjectWithTagInScene(tagFilterAttribute.GetTagFilter()); } if (null == _gameObjectsNameArr) { List <string> namesList = new List <string>(); foreach (GameObject gameObject in _gameObjectsArr) { namesList.Add(gameObject.name); } _gameObjectsNameArr = namesList.ToArray(); } GameObject currentGameObject = property.objectReferenceValue as GameObject; int currentIndex = Array.IndexOf(_gameObjectsArr, currentGameObject); if (currentIndex < 0) { currentIndex = 0; } currentIndex = EditorGUI.Popup(position, label.text, currentIndex, _gameObjectsNameArr); property.objectReferenceValue = _gameObjectsArr[currentIndex]; }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { GameObjectTagFilterAttribute tagFilterAttribute = attribute as GameObjectTagFilterAttribute; if (gameObjectsArr == null) { gameObjectsArr = FindGameObjectsWithTagInScene(tagFilterAttribute.GetTagFilter()); } if (gameObjectsArr.Length == 0) { EditorGUI.PropertyField(position, property, label); return; } if (gameObjectNamesArr == null) { List <string> namesList = new List <string>(); foreach (GameObject ga in gameObjectsArr) { namesList.Add(ga.name); } gameObjectNamesArr = namesList.ToArray(); } GameObject currentGameObject = property.objectReferenceValue as GameObject; int currentIndex = Array.IndexOf(gameObjectsArr, currentGameObject); if (currentIndex < 0) { currentIndex = 0; } currentIndex = EditorGUI.Popup(position, label.text, currentIndex, gameObjectNamesArr); property.objectReferenceValue = gameObjectsArr[currentIndex]; }