Example #1
0
        //----- property -----

        //----- method -----

        public override void OnInspectorGUI()
        {
            instance = target as BuildParam;

            serializedObject.Update();

            CustomInspector(instance, serializedObject);

            DefaultInspector(serializedObject);

            ExtendCustomInspector(instance, serializedObject);
        }
Example #2
0
        private static void CustomInspector(BuildParam instance, SerializedObject serializedObject)
        {
            EditorGUI.BeginChangeCheck();

            EditorGUILayout.PropertyField(serializedObject.FindProperty("applicationName"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("development"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("iconFolder"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("directiveSymbols"));

            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
Example #3
0
        private static void ExtendCustomInspector(BuildParam instance, SerializedObject serializedObject)
        {
            // Style.
            var pathTextStyle = GUI.skin.GetStyle("TextArea");

            pathTextStyle.alignment = TextAnchor.MiddleLeft;

            if (EditorLayoutTools.DrawHeader("Version", "BuildParamInspector-Version"))
            {
                using (new ContentsScope())
                {
                    EditorGUI.BeginChangeCheck();

                    EditorGUILayout.PropertyField(serializedObject.FindProperty("version"));
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("buildVersion"));

                    if (EditorGUI.EndChangeCheck())
                    {
                        serializedObject.ApplyModifiedProperties();
                    }
                }
            }

            var cloneAssets = Reflection.GetPrivateField <BuildParam, BuildParam.CloneAssetInfo[]>(instance, "cloneAssets").ToList();

            var originLabelWidth = EditorLayoutTools.SetLabelWidth(80f);

            if (EditorLayoutTools.DrawHeader("CloneAssets", "BuildParamInspector-CloneAssets"))
            {
                using (new ContentsScope())
                {
                    var size = EditorGUILayout.IntField("Size", cloneAssets.Count, GUILayout.Width(120f));

                    if (size != cloneAssets.Count)
                    {
                        while (size > cloneAssets.Count)
                        {
                            cloneAssets.Add(new BuildParam.CloneAssetInfo());
                        }

                        while (size < cloneAssets.Count)
                        {
                            cloneAssets.RemoveAt(cloneAssets.Count - 1);
                        }

                        Reflection.SetPrivateField <BuildParam, BuildParam.CloneAssetInfo[]>(instance, "cloneAssets", cloneAssets.ToArray());
                    }

                    EditorGUI.indentLevel++;

                    EditorLayoutTools.SetLabelWidth(80f);

                    for (var i = 0; i < cloneAssets.Count; i++)
                    {
                        var cloneAsset = cloneAssets[i];

                        using (new EditorGUILayout.HorizontalScope())
                        {
                            EditorGUILayout.LabelField("Source", cloneAsset.Source, pathTextStyle, GUILayout.Width(200f));

                            if (GUILayout.Button("Edit", GUILayout.Width(50f)))
                            {
                                UnityEditorUtility.RegisterUndo("BuildParamInfoInspector Undo", instance);

                                var projectFolder = UnityPathUtility.GetProjectFolderPath();

                                var path         = EditorUtility.OpenFolderPanel("Select folder", Application.dataPath, "");
                                var relativePath = PathUtility.FullPathToRelativePath(projectFolder, path);

                                Reflection.SetPrivateField <BuildParam.CloneAssetInfo, string>(cloneAsset, "source", relativePath);

                                serializedObject.ApplyModifiedProperties();
                            }

                            GUILayout.FlexibleSpace();
                        }

                        using (new EditorGUILayout.HorizontalScope())
                        {
                            EditorGUILayout.LabelField("To", cloneAsset.To, pathTextStyle, GUILayout.Width(200f));

                            if (GUILayout.Button("Edit", GUILayout.Width(50f)))
                            {
                                UnityEditorUtility.RegisterUndo("BuildParamInfoInspector Undo", instance);

                                var projectFolder = UnityPathUtility.GetProjectFolderPath();

                                var path         = EditorUtility.OpenFolderPanel("Select folder", Application.dataPath, "");
                                var relativePath = PathUtility.FullPathToRelativePath(projectFolder, path);

                                Reflection.SetPrivateField <BuildParam.CloneAssetInfo, string>(cloneAsset, "to", relativePath);

                                serializedObject.ApplyModifiedProperties();
                            }

                            GUILayout.FlexibleSpace();
                        }

                        GUILayout.Space(2f);
                    }

                    EditorLayoutTools.SetLabelWidth(originLabelWidth);

                    EditorGUI.indentLevel--;
                }
            }
        }