日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

不可能的工作:在FBX模型导入脚本中生成模型的预置体

發布時間:2025/3/18 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不可能的工作:在FBX模型导入脚本中生成模型的预置体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不可能的工作:在FBX模型導入腳本中生成模型的預置體

#if UNITY_EDITOR using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using UnityEditor; using UnityEngine;public class AnimImport : AssetPostprocessor {StringBuilder sb = new StringBuilder();//fbx動畫導入前的處理,對動畫集進行分段設置,劃分為各個子集void OnPreprocessAnimation(){var fpath = Path.GetDirectoryName(assetImporter.assetPath) + "/times.txt";if (!File.Exists(fpath)){//EditorUtility.DisplayDialog("缺少時間配置文件", assetImporter.assetPath + "的動畫分段文件time.txt不存在,動畫子集無法劃分", "ok");return;}var sr = new StreamReader(File.OpenRead(fpath), Encoding.ASCII);var longStr = sr.ReadToEnd();var dats = longStr.Split('\"');var anims = new List<ModelImporterClipAnimation>();for (var i = 0; i < dats.Length; ++i){if (dats[i] == "" || dats[i] == "\r\n")continue;var anim = new ModelImporterClipAnimation();var subdat = dats[i].Split(' ');anim.name = subdat[0];anim.firstFrame = float.Parse(subdat[1].TrimEnd('f'));anim.lastFrame = float.Parse(subdat[2].TrimEnd('f'));anims.Add(anim);}var modelImporter = assetImporter as ModelImporter;modelImporter.clipAnimations = anims.ToArray();}void OnPreprocessModel(){var modelImporter = assetImporter as ModelImporter;modelImporter.globalScale = 0.6f;modelImporter.importMaterials = true;modelImporter.materialName = ModelImporterMaterialName.BasedOnTextureName;}void OnPostprocessModel(GameObject go){var modelImporter = assetImporter as ModelImporter;//1,找到Materials文件夾下所有的材質文件,替換它的shadervar dir = Path.GetDirectoryName(modelImporter.assetPath) + "/Materials";var files = Directory.GetFiles(dir, "*.mat");foreach (var fs in files){var mat = AssetDatabase.LoadAssetAtPath(fs.Replace('\\', '/'), typeof(Material)) as Material;mat.shader = Shader.Find("Qx/Unity/Mobile/Mobile-Diffuse");}AssetDatabase.SaveAssets();//2,創建prefab到assets/res/prefabs/char/下//經試驗,查找文檔,發現在此方法(OnPostprocessModel)中創建prefab是不可能的,其它方法更不可能//方式一,這種方式加載出來的fbx是空的//var fbx = AssetDatabase.LoadAssetAtPath(assetImporter.assetPath, typeof(GameObject)) as GameObject;//方式二,這種方式雖然能成功創建預置體,但創建出的預置體上mesh引用為空(原因見U3D文檔)//var fbx = go;//PrefabUtility.CreatePrefab(Path.GetDirectoryName(modelImporter.assetPath) + "/testfbx.prefab", go); }} #endif

?

posted on 2018-01-18 17:21 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的不可能的工作:在FBX模型导入脚本中生成模型的预置体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。