Esempio n. 1
0
        /**
         * 导出预制体
         */
        public static void ExportPrefabs()
        {
            var selectionObjs = Selection.gameObjects;

            foreach (var selectionObj in selectionObjs)
            {
                //防止egret 序列化报错
                var saveParent = selectionObj.transform.parent;
                selectionObj.transform.parent = null;
                PathHelper.SetOutPutPath(ExportSetting.instance.exportDir, selectionObj.name);
                ExportPrefab.Export(selectionObj, PathHelper.OutPath);
                selectionObj.transform.parent = saveParent;
            }
        }
Esempio n. 2
0
        /**
         * 绘制窗口
         */
        void OnGUI()
        {
            this._scrollPosition = GUILayout.BeginScrollView(this._scrollPosition, GUILayout.Width(WIN_WIDTH), GUILayout.Height(WIN_HEIGHT));
            GUILayout.Space(SMALL_SPACE);
            //------------------------路径选择------------------------
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("根目录");
                var dir = GUILayout.TextField(ExportSetting.instance.rootName);
                if (dir != ExportSetting.instance.rootName)
                {
                    ExportSetting.instance.rootName = dir;
                }
                GUILayout.EndHorizontal();
            }
            {
                GUILayout.BeginHorizontal();
                GUILayout.TextField(ExportSetting.instance.exportDir);
                if (GUILayout.Button("导出路径", GUILayout.Width(100)))
                {
                    ExportSetting.instance.exportDir = EditorUtility.OpenFolderPanel("当前要导出的路径", Application.dataPath, "");
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.Space(SPACE);
            //------------------------辅助选项------------------------
            {
                GUILayout.BeginHorizontal();
                var common = ExportSetting.instance.common;
                common.debugLog       = GUILayout.Toggle(common.debugLog, new GUIContent("输出日志", "勾选后,方便查看输出信息"));
                common.jsonFormatting = GUILayout.Toggle(common.jsonFormatting, new GUIContent("Json格式化", "勾选后,格式化导出的Json文件"));
                common.posToZero      = GUILayout.Toggle(common.posToZero, new GUIContent("坐标归零", "勾选后,将导出的预制体坐标归零"));
                GUILayout.EndHorizontal();
            }
            GUILayout.Space(SMALL_SPACE);
            {
                this._lightSetting = EditorGUILayout.Foldout(this._lightSetting, "光照设置");
                if (this._lightSetting)
                {
                    GUILayout.BeginVertical();
                    var lightSetting = ExportSetting.instance.light;
                    lightSetting.type = (ExportLightType)EditorGUILayout.EnumPopup(lightSetting.type, GUILayout.MaxWidth(100));
                    GUILayout.EndVertical();
                }
            }

            GUILayout.Space(SMALL_SPACE);
            {
                this._sceneSetting = EditorGUILayout.Foldout(this._sceneSetting, "场景设置");
                if (this._sceneSetting)
                {
                    GUILayout.BeginHorizontal();
                    var sceneSetting = ExportSetting.instance.scene;
                    sceneSetting.lightmap       = GUILayout.Toggle(sceneSetting.lightmap, new GUIContent("光照贴图", "勾选后,如果场景有光照贴图,就会导出光照贴图"));
                    sceneSetting.staticBatching = GUILayout.Toggle(sceneSetting.staticBatching, new GUIContent("静态合并", "勾选后,场景加载完毕后会尝试静态合并。"));
                    sceneSetting.fog            = GUILayout.Toggle(sceneSetting.fog, new GUIContent("雾", "勾选后,如果场景开启了雾,则会导出对应的参数。"));
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.Space(SMALL_SPACE);
            {
                this._textureSetting = EditorGUILayout.Foldout(this._textureSetting, "图片设置");
                if (this._textureSetting)
                {
                    GUILayout.BeginVertical();
                    var textureSetting = ExportSetting.instance.texture;
                    textureSetting.useOriginalTexture = GUILayout.Toggle(textureSetting.useOriginalTexture, new GUIContent("导出原始图片", "勾选后,jpg和png会直接使用原始图片导出"));
                    textureSetting.useNormalTexture   = GUILayout.Toggle(textureSetting.useNormalTexture, new GUIContent("使用Unity法线贴图", "勾选后,使用Unity转换后的法线贴图导出"));
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("JPG导出质量:");
                    textureSetting.jpgQuality = (int)GUILayout.HorizontalSlider(textureSetting.jpgQuality, 0.0f, 100.0f, GUILayout.Width(250));
                    GUILayout.Label(textureSetting.jpgQuality.ToString());
                    GUILayout.EndHorizontal();
                    GUILayout.EndVertical();
                }
            }

            GUILayout.Space(SMALL_SPACE);
            {
                this._meshSetting = EditorGUILayout.Foldout(this._meshSetting, "网格设置");
                if (this._meshSetting)
                {
                    GUILayout.BeginHorizontal();
                    var meshSetting = ExportSetting.instance.mesh;
                    meshSetting.uv2     = GUILayout.Toggle(meshSetting.uv2, new GUIContent("UV2", "取消后,不导出UV2"));
                    meshSetting.normal  = GUILayout.Toggle(meshSetting.normal, new GUIContent("Normals", "取消后,不导出Normals"));
                    meshSetting.color   = GUILayout.Toggle(meshSetting.color, new GUIContent("Colors", "取消后,不导出Colors"));
                    meshSetting.bone    = GUILayout.Toggle(meshSetting.bone, new GUIContent("Bones", "取消后,不导出Bones"));
                    meshSetting.tangent = GUILayout.Toggle(meshSetting.tangent, new GUIContent("Tangents", "取消后,不导出Tangents"));
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.Space(SPACE);
            //------------------------主功能------------------------
            {
                //资源导出
                _resourceToolOpen = GUILayout.Toggle(_resourceToolOpen, "--------资源导出工具--------");
                if (_resourceToolOpen)
                {
                    GUILayout.Space(SPACE);
                    GUILayout.BeginHorizontal();
                    if (Selection.activeGameObject)
                    {
                        if (GUILayout.Button("预制体导出"))
                        {
                            _frameCount    = 0;
                            _isBuzy        = true;
                            _info          = "导出中...";
                            _curExportType = ExportType.PREFAB;
                        }
                    }
                    else
                    {
                        GUILayout.Label("请选中场景中要导出的对象");
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Space(SPACE);
                }
                //场景导出
                _sceneToolOpen = GUILayout.Toggle(_sceneToolOpen, "--------场景导出工具--------");
                if (_sceneToolOpen)
                {
                    GUILayout.Space(SPACE);
                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("场景导出"))
                    {
                        PathHelper.SetOutPutPath(ExportSetting.instance.exportDir, PathHelper.CurSceneName);

                        _frameCount    = 0;
                        _info          = "导出中...";
                        _isBuzy        = true;
                        _curExportType = ExportType.SCENE;
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Space(SPACE);
                }
            }

            GUILayout.EndScrollView();
            GUI.Label(new Rect(0, WIN_HEIGHT - 15, WIN_WIDTH, 15), "状态:" + _info);
            if (GUI.Button(new Rect(WIN_WIDTH - 65, WIN_HEIGHT - 20, 60, 20), "保存配置"))
            {
                ExportSetting.instance.Save(PathHelper.ConfigPath);
                AssetDatabase.Refresh();
            }
        }
Esempio n. 3
0
        /**
         * 绘制窗口
         */
        void OnGUI()
        {
            var setting = ExportToolsSetting.instance;

            this._scrollPosition = GUILayout.BeginScrollView(this._scrollPosition, GUILayout.Width(WIN_WIDTH), GUILayout.Height(400));
            GUILayout.Space(SMALL_SPACE);
            //------------------------目录选择------------------------
            {
                GUILayout.Label("当前导出路径");
                GUILayout.BeginHorizontal();
                GUILayout.TextField(ExportConfig.instance.exportPath);
                if (GUILayout.Button("选择目录", GUILayout.Width(100)))
                {
                    ExportConfig.instance.exportPath = EditorUtility.OpenFolderPanel("当前要导出的路径", Application.dataPath, "");
                    ExportConfig.instance.Save(PathHelper.ConfigPath);
                    AssetDatabase.Refresh();
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.Space(SPACE);
            //------------------------辅助选项------------------------
            {
                GUILayout.BeginHorizontal();
                setting.debugLog            = GUILayout.Toggle(setting.debugLog, new GUIContent("输出日志", "勾选后,方便查看输出信息"));
                setting.prefabResetPos      = GUILayout.Toggle(setting.prefabResetPos, new GUIContent("坐标归零", "勾选后,将导出的预制体坐标归零"));
                setting.exportOriginalImage = GUILayout.Toggle(setting.exportOriginalImage, new GUIContent("导出原始图片", "勾选后,jpg和png会直接使用原始图片导出"));
                // ExportToolsSetting.unityNormalTexture = GUILayout.Toggle(ExportToolsSetting.unityNormalTexture, new GUIContent("使用Unity法线贴图", "勾选后,时使用Unity转换后的法线贴图导出"));

                GUILayout.EndHorizontal();
            }
            GUILayout.Space(SPACE);
            this._lightSetting = EditorGUILayout.Foldout(this._lightSetting, "光照设置");
            if (this._lightSetting)
            {
                GUILayout.BeginVertical();
                setting.lightType = (ExportLightType)EditorGUILayout.EnumPopup(setting.lightType, GUILayout.MaxWidth(100));
                GUILayout.EndVertical();
            }
            GUILayout.Space(SMALL_SPACE);
            this._meshSetting = EditorGUILayout.Foldout(this._meshSetting, "网格设置");
            if (this._meshSetting)
            {
                GUILayout.BeginHorizontal();
                setting.enableNormals = GUILayout.Toggle(setting.enableNormals, new GUIContent("Normals", "取消后,不导出Normals"));
                setting.enableColors  = GUILayout.Toggle(setting.enableColors, new GUIContent("Colors", "取消后,不导出Colors"));
                setting.enableBones   = GUILayout.Toggle(setting.enableBones, new GUIContent("Bones", "取消后,不导出Bones"));
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                this._serializeObject.Update();
                if (this._meshIgnoresProperty != null)
                {
                    EditorGUI.BeginChangeCheck();
                    EditorGUILayout.PropertyField(this._meshIgnoresProperty, new GUIContent("忽略对象:", "在忽略列表中的对象网格属性全部导出"), true);
                    if (EditorGUI.EndChangeCheck())
                    {
                        _serializeObject.ApplyModifiedProperties();
                    }
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.Space(SPACE);
            //------------------------主功能------------------------
            {
                //资源导出
                _resourceToolOpen = GUILayout.Toggle(_resourceToolOpen, "--------资源导出工具--------");
                if (_resourceToolOpen)
                {
                    GUILayout.Space(SPACE);
                    GUILayout.BeginHorizontal();
                    if (Selection.activeGameObject)
                    {
                        if (GUILayout.Button("导出当前选中对象"))
                        {
                            _frameCount    = 0;
                            _isBuzy        = true;
                            _info          = "导出中...";
                            _curExportType = ExportType.PREFAB;
                        }
                    }
                    else
                    {
                        GUILayout.Label("请选中场景中要导出的对象", _showStyle);
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Space(SPACE);
                }
                //场景导出
                _sceneToolOpen = GUILayout.Toggle(_sceneToolOpen, "--------场景导出工具--------");
                if (_sceneToolOpen)
                {
                    GUILayout.Space(SPACE);
                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("导出当前场景"))
                    {
                        PathHelper.SetOutPutPath(ExportConfig.instance.exportPath, PathHelper.CurSceneName);

                        _frameCount    = 0;
                        _info          = "导出中...";
                        _isBuzy        = true;
                        _curExportType = ExportType.SCENE;
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Space(SPACE);
                }
            }

            GUILayout.EndScrollView();
            GUI.Label(new Rect(0, WIN_HEIGHT - 15, WIN_WIDTH, 15), "状态:" + _info);
        }