/// <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; }
/// <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; }