簡體   English   中英

如何使用布爾值在get方法中返回顏色?

[英]How can I return a color in a get method using a bool?

主要目標是能夠使用自定義或默認顏色。

using UnityEditor;
using UnityEngine;
using UnityEngine.Rendering;

// Implementation from UnityEditor.Graphs.GraphGUI
public static class GraphBackground
{
    public static Color CustomkGridMinorColorDark;
    public static Color CustomkGridMajorColorDark;
    public static Color CustomkGridMinorColorLight;
    public static Color CustomkGridMajorColorLight;

    public static bool defaultColors = true;

    private static readonly Color kGridMinorColorDark = new Color(0f, 0f, 0f, 0.18f);
    private static readonly Color kGridMajorColorDark = new Color(0f, 0f, 0f, 0.28f);
    private static readonly Color kGridMinorColorLight = new Color(0f, 0f, 0f, 0.1f);
    private static readonly Color kGridMajorColorLight = new Color(0f, 0f, 0f, 0.15f);

    private static Color gridMinorColor
    {
        get
        {
            if (EditorGUIUtility.isProSkin)
                return kGridMinorColorDark;
            else
                return kGridMinorColorLight;
        }
    }

    private static Color gridMajorColor
    {
        get
        {
            if (EditorGUIUtility.isProSkin)
                return kGridMajorColorDark;
            else
                return kGridMajorColorLight;
        }
    }

我想使用標志defaultColors來決定是使用默認顏色還是自定義顏色。

問題是,如果我在做:

private static Color gridMinorColor
    {
        get
        {
            if (defaultColors == true)
            {
                if (EditorGUIUtility.isProSkin)
                    return kGridMinorColorDark;
                else
                    return kGridMinorColorLight;
            }
        }
    }

我現在遇到錯誤,因為它現在不返回任何內容。

好吧,不是所有的gridMinorColor案例gridMinorColor返回有效值。 在您的情況下,您還可以使用條件運算符? 使您的代碼更易於閱讀/編寫

private static Color gridMinorColor
{
    get
    {
        if (defaultColors)
        {
            return EditorGUIUtility.isProSkin ? kGridMinorColorDark : kGridMinorColorLight;
        }

        // equals the else part
        // but since you return within the if you can skip the else keyword
        return EditorGUIUtility.isProSkin ? CustomkGridMinorColorDark : CustomkGridMinorColorLight;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM