/// <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(); }
/// <summary> /// プレファブを作成する /// </summary> /// <param name='shader_type'>シェーダーの種類</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='use_mecanim'>Mecanimを使用するか</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> /// <param name='is_pmx_base_import'>PMX Baseでインポートするか</param> public void CreatePrefab(PMD.PMDConverter.ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale, bool is_pmx_base_import) { GameObject game_object; Object prefab; if (is_pmx_base_import) { //PMX Baseでインポートする //PMXファイルのインポート PMX.PMXFormat format = PMXLoaderScript.Import(file_path_); //ゲームオブジェクトの作成 game_object = PMXConverter.CreateGameObject(format, use_rigidbody, use_mecanim, use_ik, scale); // プレファブに登録 prefab = PrefabUtility.CreateEmptyPrefab(format.meta_header.folder + "/" + format.meta_header.name + ".prefab"); } else { //V2エクスポーターを使用しない //PMDファイルのインポート if (null == format_) { //まだ読み込んでいないなら読むこむ try { //PMX読み込みを試みる format_ = PMXLoaderScript.PmdImport(file_path_); } catch (System.FormatException) { //PMXとして読み込めなかったら //PMDとして読み込む format_ = PMDLoaderScript.Import(file_path_); } header_ = format_.head; } //ゲームオブジェクトの作成 game_object = PMDConverter.CreateGameObject(format_, shader_type, use_rigidbody, use_mecanim, use_ik, scale); // プレファブに登録 prefab = PrefabUtility.CreateEmptyPrefab(format_.folder + "/" + format_.name + ".prefab"); } PrefabUtility.ReplacePrefab(game_object, prefab); // アセットリストの更新 AssetDatabase.Refresh(); // 一度,表示されているモデルを削除して新しくPrefabのインスタンスを作る GameObject.DestroyImmediate(game_object); PrefabUtility.InstantiatePrefab(prefab); }
/// <summary> /// GameObjectを作成する /// </summary> /// <param name='format'>内部形式データ</param> /// <param name='shader_type'>シェーダーの種類</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='use_mecanim'>Mecanimを使用するか</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> public static GameObject CreateGameObject(PMDFormat format, ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) { PMDConverter converter = new PMDConverter(); return(converter.CreateGameObject_(format, shader_type, use_rigidbody, use_mecanim, use_ik, scale)); }
/// <summary> /// GameObjectを作成する /// </summary> /// <param name='format'>内部形式データ</param> /// <param name='shader_type'>シェーダーの種類</param> /// <param name='use_rigidbody'>剛体を使用するか</param> /// <param name='use_mecanim'>Mecanimを使用するか</param> /// <param name='use_ik'>IKを使用するか</param> /// <param name='scale'>スケール</param> public static GameObject CreateGameObject(PMDFormat format, ShaderType shader_type, bool use_rigidbody, bool use_mecanim, bool use_ik, float scale) { PMDConverter converter = new PMDConverter(); return converter.CreateGameObject_(format, shader_type, use_rigidbody, use_mecanim, use_ik, scale); }