Эстетические веб-цвета

OnGUI вызывается только тогда, когда мышь (перемещается / щелкает) над соответствующим окном -> она не берет almost 5 seconds, но пока вы снова не наведете указатель мыши на окно.

Чтобы решить эту проблему, вы можете реализовать EditorWindow.OnSelectionChange и принудительно установить EditorWindow.Repaint , чтобы ваше окно обновлялось каждый раз, когда меняется Selection.

private void OnSelectionChange()
{
    Repaint();
}

Второй выпуск создается следующим образом:

GUILayout.TextField вместе с GUILayout.FlexibleSpace, если не определены иначе, автоматически использует ширину вставленного текста -> Так как у вас есть пустой текст в начале имеет ширину почти 0 ... вы на самом деле можете видеть ваш TextField очень тонким, и он становится больше по мере заполнения:

enter image description here

Использование ящиков из EditorGUILayout вместо этого решает это:

EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
GUILayout.FlexibleSpace();
searchString = EditorGUILayout.TextField(searchString, EditorStyles.toolbarTextField);
EditorGUILayout.EndHorizontal();

var items = Selection.gameObjects;
// Do comparison here. For example
foreach (var selectedObject in selected)
{
    if (selectedObject .name.Contains(searchString))
    {
        EditorGUILayout.LabelField(selectedObject.name);
    }
}

Подсказка Если вы замените

EditorGUILayout.LabelField(items[i].name);

на

if (GUILayout.Button(selectedObject.name, EditorStyles.label))
{
    EditorGUIUtility.PingObject(selectedObject);
}

Вы можете нажать на имя и «пинговать» соответствующий GameObject в иерархии!


Обновление с тех пор, как это было задано в комментариях

Если вы хотите включить всех дочерних элементов в рекурсивную выборку, вы можете сделать что-то вроде (могут быть и лучшие способы это то, что я придумал в течение 10 минут)

private static IEnumerable GetChildrenRecursive(GameObject root)
{
    var output = new List();

    //add the root object itself
    output.Add(root);

    // iterate over direct children
    foreach (Transform child in root.transform)
    {
        // add the child itslef
        output.Add(child.gameObject);

        // Recursion here: Get all subchilds of this child
        var childsOfchild = GetChildrenRecursive(child.gameObject);
        output.AddRange(childsOfchild);
    }

    return output;
}

private static IEnumerable GetChildrenRecursive(IEnumerable rootObjects)
{
    var output = new List();


    foreach (var root in rootObjects)
    {
        output.AddRange(GetChildrenRecursive(root));
    }

    // remove duplicates
    return output.Distinct().ToList();
}

и используя

var selected = GetChildrenRecursive(Selection.gameObjects);

Другое обновление

Так как это может быть не очень эффективнее, вы, вероятно, должны переместить его в Searching, а затем обновить значение selected также в OnSelectionChange, например,

public class SearchableWindow : EditorWindow
{
    private string searchString = "";
    private List selected;

    [MenuItem("Tools/Searching")]
    private static void Searching()
    {
        const int width = 340;
        const int height = 420;

        var x = (Screen.currentResolution.width - width) / 2;
        var y = (Screen.currentResolution.height - height) / 2;

        var window = GetWindow();
        window.position = new Rect(x, y, width, height);

        window.selected = GetChildrenRecursive(Selection.gameObjects).ToList();
    }

    private void OnSelectionChange()
    {
        selected = GetChildrenRecursive(Selection.gameObjects).ToList();
        Repaint();
    }

    private void OnGUI()
    {
        EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
        GUILayout.FlexibleSpace();
        searchString = EditorGUILayout.TextField(searchString, EditorStyles.toolbarTextField);
        EditorGUILayout.EndHorizontal();

        // only as fallback
        if (selected == null)
        {
            selected = GetChildrenRecursive(Selection.gameObjects).ToList();
        }

        // Do comparison here. For example
        foreach (var selectedObject in selected)
        {
            if (selectedObject.name.Contains(searchString))
            {
                if (GUILayout.Button(selectedObject.name, EditorStyles.label))
                {
                    EditorGUIUtility.PingObject(selectedObject);
                }
            }
        }
    }

    private static IEnumerable GetChildrenRecursive(GameObject root)
    {
        var output = new List();

        //add the root object itself
        output.Add(root);

        // iterate over direct children
        foreach (Transform child in root.transform)
        {
            // add the children themselves
            output.Add(child.gameObject);

            var childsOfchild = GetChildrenRecursive(child.gameObject);
            output.AddRange(childsOfchild);
        }



        return output;
    }

    private static IEnumerable GetChildrenRecursive(IEnumerable rootObjects)
    {
        var output = new List();

        foreach (var root in rootObjects)
        {
            output.AddRange(GetChildrenRecursive(root));
        }

        // remove any duplicates that would e.g. appear if you select a parent and its child
        return output.Distinct();
    }
}

enter image description here [ 1139]

13
задан Giffyguy 5 August 2009 в 18:47
поделиться

6 ответов

ColorSchemer - хороший для нахождения дополнительных цветов

1
ответ дан 1 December 2019 в 22:24
поделиться

Можно найти некоторые созданные пользователями цветовые схемы на Kuler:

http://kuler.adobe.com

0
ответ дан 1 December 2019 в 22:24
поделиться

Я просто собираюсь бросить что-то там, но более важно (IMO) иметь цветовую схему, которая способствует удобству использования по тому, которое эстетически приятно. Это снабжает при Разработке большего количества Применимых веб-сайтов, мог бы представлять интерес, наряду с этим сообщением в блоге, которое обращается и к взгляду и к удобству использования.

3
ответ дан 1 December 2019 в 22:24
поделиться

Я часто использую kuler.adobe.com. Это довольно полезно.

0
ответ дан 1 December 2019 в 22:24
поделиться

При нахождении страницы, Вам нравится, можно узнать точные цвета, используемые от, "мне Нравятся Цвета"

0
ответ дан 1 December 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: