private void ApplyChanges() { if (Event.current.isKey) { switch (Event.current.keyCode) { case KeyCode.Return: case KeyCode.KeypadEnter: Event.current.Use(); MeshAnimationExport.ResizeDataLists(ref m_ExportParam.boneTransforms, ref m_ExportParam.boneNames, m_BoneCount); MeshAnimationExport.ResizeDataLists(ref m_ExportParam.animationClips, ref m_ExportParam.animationNames, m_ClipCount); break; } } }
private void OnGUI() { if (null == m_OutputFolerPath) { m_OutputFolerPath = Application.streamingAssetsPath; } if (null == m_ExportParam) { ResetSettings(); } m_WindowWidth = position.width; #region ScrollView m_MainScrollPosition = EditorGUILayout.BeginScrollView(m_MainScrollPosition); //烘培定义角度转向 eulerAngle = EditorGUILayout.Vector3Field("Bake model after apply Rotation Offset XYZ", eulerAngle); EditorGUILayout.Space(); string defaultPath = DEFAULT_OUTPUT_FOLDER + (null == m_GoFBX ? "" : (m_GoFBX.name + "/")); m_ExportParam.outputFilePath = m_OutputFilePath = defaultPath; m_ExportParam.outputFolderPath = m_OutputFolerPath = Path.GetDirectoryName(defaultPath); EditorGUILayout.LabelField("Default Folder:" + m_ExportParam.outputFolderPath); EditorGUILayout.Space(); #region select output file EditorGUILayout.BeginHorizontal(); string projectRelativeFilePath = GetAssetPath(m_OutputFilePath); EditorGUILayout.SelectableLabel(projectRelativeFilePath, EditorStyles.textField, GUILayout.Height(EditorGUIUtility.singleLineHeight)); GUI.SetNextControlName("BrowseButton"); if (GUILayout.Button("Browse")) { BrowseSaveFile(); } EditorGUILayout.EndHorizontal(); #endregion select output file EditorGUILayout.Space(); #region select FBX file EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Base FBX:", GUILayout.Width(EditorGUIUtility.labelWidth - 4)); GameObject newFbx = EditorGUILayout.ObjectField(m_GoFBX, typeof(GameObject), true) as GameObject; if (newFbx != null && newFbx != m_GoFBX) { // error if they drag the prefab itself, since it won't have any transform data // 必须是挂载在场景中的 GameObject if (PrefabUtility.GetPrefabParent(newFbx) != null) { m_GoFBX = newFbx; m_ExportParam = MeshAnimationExport.GenerateDefaultSettings(newFbx); m_OutputFolerPath = m_ExportParam.outputFolderPath; m_OutputFilePath = m_ExportParam.outputFilePath; m_ClipCount = m_ExportParam.animationClips.Length; m_BoneCount = m_ExportParam.boneTransforms.Length; } } EditorGUILayout.EndHorizontal(); #endregion select FBX file EditorGUILayout.Space(); #region Framerate Setting m_ExportParam.framerate = EditorGUILayout.FloatField("Capture Framerate:", m_ExportParam.framerate); m_ExportParam.framerate = Mathf.Max(m_ExportParam.framerate, 1.0f); #endregion EditorGUILayout.Space(); #region Clip Count Setting m_ClipCount = EditorGUILayout.IntField("Number of Clips:", m_ClipCount); ApplyChanges(); #endregion EditorGUILayout.Space(); m_LabelWidth = GUILayout.Width(m_WindowWidth * 0.35f); #region Animation Clip Setting EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Animation Name:", m_LabelWidth); EditorGUILayout.LabelField("Animation File:", m_LabelWidth); EditorGUILayout.LabelField("Frames:", GUILayout.Width(m_WindowWidth * 0.2f)); } EditorGUILayout.EndHorizontal(); DrawAnimationArrayGui(); #endregion EditorGUILayout.Space(); #region Bone Count Setting m_BoneCount = EditorGUILayout.IntField("Number of Bones:", m_BoneCount); ApplyChanges(); #endregion EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Bone Name:", m_LabelWidth); EditorGUILayout.LabelField("Bone Transform:", m_LabelWidth); EditorGUILayout.EndHorizontal(); DrawBoneArrayGui(); #region Clear and Save Buttons EditorGUILayout.BeginHorizontal(); GUI.SetNextControlName("ClearButton"); if (GUILayout.Button("Clear")) { ResetSettings(); GUI.FocusControl("ClearButton"); } if (GUILayout.Button("Export")) { //Save if (eulerAngle != Vector3.zero) { m_ExportParam.quaternionOffset = Quaternion.Euler(eulerAngle); } //MeshAnimationExporter.Export(fbx, exportSettings); MeshAnimationExport.ExportCombinedTexture(m_GoFBX, m_ExportParam); } EditorGUILayout.EndHorizontal(); #endregion EditorGUILayout.EndScrollView(); #endregion ScrollView }