Esempio n. 1
0
    void OnGUI()
    {
        if (senceHierarchyInfo != null && sceneAsset != null)
        {
            EditorGUI.LabelField(new Rect(20, 10, 1000, 20), new GUIContent("Web 输出:" + savePath));
        }

        if (lastSenceHierarchyInfo != senceHierarchyInfo)
        {
            lastSenceHierarchyInfo = senceHierarchyInfo;
            CheckOutPutPathNameAndCreateFolder();
        }

        if (lastSceneAsset != sceneAsset)
        {
            lastSceneAsset = sceneAsset;
            CheckOutPutPathNameAndCreateFolder();
        }



        senceHierarchyInfo = (SenceHierarchyInfo)EditorGUI.ObjectField(new Rect(20, 40, 300, 16), senceHierarchyInfo, typeof(SenceHierarchyInfo), true);
        sceneAsset         = (SceneAsset)EditorGUI.ObjectField(new Rect(20, 60, 300, 16), sceneAsset, typeof(SceneAsset), true);

/*
 *      savePath = EditorGUI.TextField(new Rect(20, 60, 280, 18), new GUIContent(""), savePath);
 *      if (GUI.Button(new Rect(320, 59, 150, 20), new GUIContent("Set Path (设置路径)")))
 *      {
 *          string temp = EditorUtility.OpenFolderPanel("Select ThreeJS folder", Application.dataPath, "threejsdata");
 *          if (temp != "")
 *          {
 *              savePath = temp;
 *              Debug.Log(savePath);
 *          }
 *      }
 */

        customTextrueMaxSize   = (TextrueSize)EditorGUI.EnumPopup(new Rect(170, 110, 300, 25), "贴图输出最大值", customTextrueMaxSize);
        lightmapTextrueMaxSize = (TextrueSize)EditorGUI.EnumPopup(new Rect(170, 150, 300, 25), "unity烘培贴图输出最大值", lightmapTextrueMaxSize);

        onlyHierarchyAndInteractiveinfo = EditorGUI.ToggleLeft(new Rect(170, 190, 300, 25), new GUIContent("只导出Hierarchy+Interactive.info"), onlyHierarchyAndInteractiveinfo);

        if (GUI.Button(new Rect(320, 250, 150, 20), new GUIContent("Export")))
        {
            CheckOutPutPathNameAndCreateFolder();

            if (senceHierarchyInfo != null)
            {
                //BuildAsset时忽略这个物体,这个物体只用在导出web资源,运行时不需要
                senceHierarchyInfo.gameObject.hideFlags = HideFlags.DontSaveInBuild;

                useCompress = true;

                //收集场景中所有需要导出的资源
                senceHierarchyInfo.PrepareThreeJsSceneData();

                //创建输出的文件夹
//              if (!onlyHierarchyAndInteractiveinfo)
//              CreateOutPutFold();

                //创建bin流,包含shader流
                if (!onlyHierarchyAndInteractiveinfo)
                {
                    CreateBuuferGeometryBinFile(senceHierarchyInfo);
                }
                else
                {
                    senceHierarchyInfo.allGameObject3DMesh = senceHierarchyInfo.lastAllGameObject3DMesh;
                }

                //创建场景信息
                CreateSenceHierarchyJsonFile(senceHierarchyInfo);

                //创建交互信息
                CreateSenceInteractiveJsonFile(senceHierarchyInfo);

                //复制出所有图片
                if (!onlyHierarchyAndInteractiveinfo)
                {
                    CopyAllTexture(senceHierarchyInfo);
                }

                //清除临时添加的ThreeJsObject3DInfo
                senceHierarchyInfo.DestroyTempData();
            }
            else
            {
                string log = "请选中SenceHierarchyInfo物体,如果场景中没有,请在根目录添加一个";
                GlobalDebug.Addline(log);
                Debug.Log(log);
                Debug.LogWarning(log);
                Debug.LogError(log);
            }
        }
    }