コード例 #1
0
    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];
    }
コード例 #2
0
        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];
        }