Beispiel #1
0
    public void AddTextComponent()
    {
        List <Object> components = new List <Object>();

        Object[] assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(target));
        for (int i = 0; i < assets.Length; i++)
        {
            if (AssetDatabase.IsSubAsset(assets[i]))
            {
                if (assets[i] is CoolNoteTextData)
                {
                    components.Add(assets[i]);
                }
                else if (assets[i] is CoolNoteImageData)
                {
                    components.Add(assets[i]);
                }
            }
        }

        int currentCount = components.Count;

        CoolNoteTextData newCoolNoteText = CreateInstance <CoolNoteTextData>();

        newCoolNoteText.name = string.Format("{0}_Text", currentCount.ToString("D8"));
        AssetDatabase.AddObjectToAsset(newCoolNoteText, target);

        AssetDatabase.Refresh();
        AssetDatabase.SaveAssets();
    }
Beispiel #2
0
    public override void OnInspectorGUI()
    {
        List <Object> components = new List <Object>();

        Object[] assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(target));
        for (int i = 0; i < assets.Length; i++)
        {
            if (AssetDatabase.IsSubAsset(assets[i]))
            {
                components.Add(assets[i]);
            }
        }

        components.Sort((x, y) => x.name.CompareTo(y.name));

        for (int i = 0; i < components.Count; i++)
        {
            Object componentData = components[i];

            if (componentData is CoolNoteTextData)
            {
                GUILayout.Space(16);
                CoolNoteTextData textData = (CoolNoteTextData)componentData;

                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("X", GUILayout.Width(20)))
                {
                    DeleteComponent(i);
                    break;
                }
                GUILayout.EndHorizontal();

                SerializedObject serObj = new SerializedObject(textData);
                serObj.FindProperty("text").stringValue = EditorGUILayout.TextArea(serObj.FindProperty("text").stringValue, GUILayout.MinHeight(30), GUILayout.ExpandHeight(true));
                serObj.ApplyModifiedProperties();
            }
            else if (componentData is CoolNoteImageData)
            {
                GUILayout.Space(16);
                CoolNoteImageData imageData = (CoolNoteImageData)componentData;

                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("E", GUILayout.Width(20)))
                {
                    _editingImage = imageData;
                }
                if (GUILayout.Button("X", GUILayout.Width(20)))
                {
                    DeleteComponent(i);
                    break;
                }
                GUILayout.EndHorizontal();

                SerializedObject serObj = new SerializedObject(imageData);

                float width  = EditorGUIUtility.currentViewWidth;
                float height = ExtraMath.Map(imageData.image.height, 0, imageData.image.width, 0, width);

                Rect rect = GUILayoutUtility.GetRect(width, height);

                GUI.DrawTexture(rect, imageData.image);

                serObj.ApplyModifiedProperties();
            }
        }

        serializedObject.ApplyModifiedProperties();

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Add Text"))
        {
            AddTextComponent();
        }

        GUILayout.Space(10);

        if (GUILayout.Button("Add Image"))
        {
            AddImageComponent();
        }
        GUILayout.EndHorizontal();
    }