日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不可能的工作:在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模型导入脚本中生成模型的预置体的全部內容,希望文章能夠幫你解決所遇到的問題。

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