public override void OnGUIFunction() { shader_type = (PMDConverter.ShaderType)EditorGUILayout.EnumPopup("Shader Type", shader_type); rigidFlag = EditorGUILayout.Toggle("Rigidbody", rigidFlag); animation_type = (PMXConverter.AnimationType)EditorGUILayout.EnumPopup("Animation Type", animation_type); use_ik = EditorGUILayout.Toggle("Use IK", use_ik); scale = EditorGUILayout.Slider("Scale", scale, 0.001f, 1.0f); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("Original", EditorStyles.miniButtonLeft)) { scale = 0.085f; } if (GUILayout.Button("1.0", EditorStyles.miniButtonRight)) { scale = 1.0f; } } EditorGUILayout.EndHorizontal(); is_pmx_base_import = EditorGUILayout.Toggle("Use PMX Base Import", is_pmx_base_import); }
/// <summary> /// プレファブを作成する /// </summary> /// <param name='shader_type'>シェーダーの種類</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='animation_type'>アニメーションタイプ</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> /// <param name='is_pmx_base_import'>PMX Baseでインポートするか</param> public void CreatePrefab(PMDConverter.ShaderType shader_type, bool use_rigidbody, PMXConverter.AnimationType animation_type, bool use_ik, float scale, bool is_pmx_base_import) { GameObject game_object; string prefab_path; if (is_pmx_base_import) { //PMX Baseでインポートする //PMXファイルのインポート PMX.PMXFormat pmx_format = null; try { //PMX読み込みを試みる pmx_format = PMXLoaderScript.Import(file_path_); } catch (System.FormatException) { //PMXとして読み込めなかったら //PMDとして読み込む PMD.PMDFormat pmd_format = PMDLoaderScript.Import(file_path_); pmx_format = PMXLoaderScript.PMD2PMX(pmd_format); } header_ = pmx_format.header; //ゲームオブジェクトの作成 game_object = PMXConverter.CreateGameObject(pmx_format, use_rigidbody, animation_type, use_ik, scale); // プレファブパスの設定 prefab_path = pmx_format.meta_header.folder + "/" + pmx_format.meta_header.name + ".prefab"; } else { //PMXエクスポーターを使用しない //PMDファイルのインポート PMD.PMDFormat pmd_format = null; try { //PMX読み込みを試みる PMX.PMXFormat pmx_format = PMXLoaderScript.Import(file_path_); pmd_format = PMXLoaderScript.PMX2PMD(pmx_format); } catch (System.FormatException) { //PMXとして読み込めなかったら //PMDとして読み込む pmd_format = PMDLoaderScript.Import(file_path_); } header_ = PMXLoaderScript.PMD2PMX(pmd_format.head); //ゲームオブジェクトの作成 bool use_mecanim = PMXConverter.AnimationType.LegacyAnimation == animation_type; game_object = PMDConverter.CreateGameObject(pmd_format, shader_type, use_rigidbody, use_mecanim, use_ik, scale); // プレファブパスの設定 prefab_path = pmd_format.folder + "/" + pmd_format.name + ".prefab"; } // プレファブ化 //PrefabUtility.CreatePrefab(prefab_path, game_object, ReplacePrefabOptions.ConnectToPrefab); // アセットリストの更新 //AssetDatabase.Refresh(); }