Beispiel #1
0
    public void OnGUI()
    {
        if (EditorApplication.isPlaying == false)
        {
            _PackingAtlasWindow.Close();
            return;
        }
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.BeginVertical();
        EditorGUILayout.LabelField("--------------------------------------------------------------------------------");

        PackingAtlas packingAtlas = DynamicAtlasManager.Instance.GetPackingAtlas(_mGroup);

        EditorGUILayout.LabelField("图集尺寸:" + packingAtlas.atlasWidth + " x " + packingAtlas.atlasHeight);
        EditorGUILayout.LabelField("--------------------------------------------------------------------------------");
        EditorGUILayout.EndVertical();
        GUILayout.Space(10);
        EditorGUILayout.BeginVertical();
        isShowFreeAreas = GUILayout.Toggle(isShowFreeAreas, "Show Free Areas", GUILayout.Width(200), GUILayout.Height(20));

        EditorGUILayout.BeginHorizontal();
        if (isShowFreeAreas)
        {
            if (GUILayout.Button("Refresh and Clear Free Area", GUILayout.Width(200), GUILayout.Height(20)))
            {
                isRefreshFreeAreas = true;
                ClearFreeAreas();
            }
        }
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.EndVertical();
        scale = EditorGUILayout.Slider(scale, 0.2f, 1);
        EditorGUILayout.EndHorizontal();

        if (AtlasConfig.kUsingCopyTexture)
        {
            List <Texture2D> tex2DList = packingAtlas.tex2DList;
            int count = tex2DList.Count;
            for (int i = 0; i < count; i++)
            {
                Texture2D tex2D = tex2DList[i];
                float     poxX  = (i + 1) * 10 + i * packingAtlas.atlasWidth * scale;
                if (isShowFreeAreas)
                {
                    DrawFreeArea(i, packingAtlas);
                }
                GUI.DrawTexture(new Rect(poxX, formPosY, packingAtlas.atlasWidth * scale, packingAtlas.atlasHeight * scale), tex2D);
            }
        }
        else
        {
            List <RenderTexture> renderTexList = packingAtlas.renderTexList;
            int count = renderTexList.Count;
            for (int i = 0; i < count; i++)
            {
                float poxX = (i + 1) * 10 + i * packingAtlas.atlasWidth * scale;
                if (isShowFreeAreas)
                {
                    DrawFreeArea(i, packingAtlas);
                }
                GUI.DrawTexture(new Rect(poxX, formPosY, packingAtlas.atlasWidth * scale, packingAtlas.atlasHeight * scale), renderTexList[i]);
            }
        }

        if (isShowFreeAreas)
        {
            isRefreshFreeAreas = false;
        }
    }