示例#1
0
        /// <summary>
        /// アトラスメーカーを描画します.
        /// </summary>
        void OnGUI()
        {
            //プロジェクトビューでアトラスを削除した時、targetAtlasをnullに設定し、Createモードに更新します.
            if (isSelectedAtlas && !atlasMaker.targetAtlas)
            {
                atlasMaker.ChangeCurrentAtlas(null);
            }
            isSelectedAtlas = atlasMaker.targetAtlas;

            CacheGUI();
            using (new GUILayout.HorizontalScope(styleHeader)) {
                //作業アトラスの選択.
                //プロジェクト内に存在するアトラスをポップアップ表示します.
                //作業アトラスを選択した場合は、更新モードになります(Update).
                //作業アトラスを選択しない(new ...)場合は、新規アトラス作成モードになります(Create).
                EditorGUIUtility.labelWidth = 50;
                AtlasImageEditor.DrawAtlasPopupLayout(
                    new GUIContent("Atlas"),
                    new GUIContent("Create new Atlas"),
                    atlasMaker.targetAtlas,
                    selected => atlasMaker.targetAtlas = selected,
                    GUILayout.MaxWidth(position.width * 0.5f)
                    );

                //アトラス内のスプライト間隔.
                atlasMaker.padding = Mathf.Clamp(EditorGUILayout.IntField("Padding", atlasMaker.padding, GUILayout.MaxWidth(70)), 0, 10);

                //正方形にアトラスをリサイズ.
                atlasMaker.squared = EditorGUILayout.Toggle("Squared", atlasMaker.squared, GUILayout.MaxWidth(70));

                GUILayout.FlexibleSpace();
                //アトラス更新/作成ボタン.アトラス更新をトリガします.
                using (new EditorGUI.DisabledGroupScope(!atlasMaker.metaDatas.Any(x => x.isChanged))) {
                    if (GUILayout.Button(atlasMaker.targetAtlas ? "Update" : "Create", GUILayout.Width(50)))
                    {
                        EditorApplication.delayCall += UpdateAtlas;
                    }
                }
            }

            //アトラス内スプライト、及び選択中のスプライトリストを表示します.
            if (0 < atlasMaker.metaDatas.Count)
            {
                using (var svs = new EditorGUILayout.ScrollViewScope(m_ScrollView)) {
                    m_ScrollView = svs.scrollPosition;
                    foreach (var m in atlasMaker.metaDatas)
                    {
                        Draw(GUILayoutUtility.GetRect(50, 20, GUILayout.ExpandWidth(true)), m);
                    }
                }
            }
            //アトラス内にスプライトがない/選択中のスプライトがない場合、ヘルプを表示します.
            else
            {
                EditorGUILayout.HelpBox("Please select one or more textures in the Project View window.", MessageType.Info);
            }
            return;
        }
示例#2
0
        /// <summary>
        /// インスペクタGUIコールバック.
        /// Inspectorウィンドウを表示するときにコールされます.
        /// </summary>
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            //アトラスとスプライトを表示.
            AtlasImageEditor.DrawAtlasPopupLayout(new GUIContent("Atlas"), new GUIContent("-"), spAtlas, atlas =>
            {
                if (!atlas || !atlas.Contains(spSpriteName.stringValue))
                {
                    spSpriteName.stringValue = "";
                }
            });
            EditorGUI.indentLevel++;
            AtlasImageEditor.DrawSpritePopup(spAtlas.objectReferenceValue as Atlas, spSpriteName);
            EditorGUI.indentLevel--;

            serializedObject.ApplyModifiedProperties();

            //プレビューを更新.
            AtlasRenderer atlasRenderer = target as AtlasRenderer;

            preview.sprite = atlasRenderer.cachedSpriteRenderer.sprite;
            preview.color  = atlasRenderer.cachedSpriteRenderer.color;
        }