Unity 3 D研究院エディタの自動生成materialファイル(八)
2429 ワード
変換元:http://www.xuanyusong.com/archives/3648 プログラムはsvnから工事を更新して、わけがわからずsvnをアップロードしていないmaterialファイルがたくさん出てきました.なぜなら、下図のように美術の同級生がFBXファイルをunityにドラッグしたとき.unityは自動的に同級ディレクトリの下にMaterialsフォルダを生成し、materialファイルを生成します.このファイル名はFBXで指定されていますが、言い換えれば美術は3 dmaxで指定されています.なぜmaterialが生成されるのかは、デフォルトではimport materialがチェックされているからです.
もし誰かが美術にこの材質の名前を書くのに間違いを訂正する必要があると言ったら、美術は一般的にunityでこの間違いのmaterialを直接削除し、unityで正しい名前の材質を作成します.続いて美術会はsvnをアップロードし、問題は解決したようだ.しかし、もう一人がこのプロジェクトを再チェックし、unityを開くと間違ったmaterialファイルがFBXに再生成され、徐々にプロジェクトのめちゃくちゃな材質が出てきます.
この問題を解決するために、fbxがこのmaterialファイルを生成することを禁止することを考えたので、次のコードがありました.
C#
しかし問題はすぐに来て、美術はやっとシーンを編集して、模型を調整すると計画しましょう.そこで新しいモデルを変えて、しまった!!新しいモデルは古いモデルのマテリアル情報に関連付けられていないためです.だからシーン中のマテリアルが失われました...実際には、美術がシーンを編集するときにprefabでやってもそうではありませんが、美術は一般的にprefabではありません.彼らはシーンを直接fbxをドラッグして、マテリアルが間違っていることに気づいたら、マテリアルを作成して、複数の部分をコピーする必要がある場合はctrl+dをクリックします.したがって、マテリアルが失われると、結果は想像できません.
そこで私はまた1つの方法を考えて、やはり自動的に材質のスイッチを生成します.ただし、マテリアル名はモデル名と一致する必要があります.一致しない場合、プログラムは誤った情報を美術に出力します.するとまた次のようなコードがありました.
あら.私は本当にtoo young too simpleです!!何の警告だ、ヒントの間違いだ、美術はそれを気にしない.unityをインポートしてsvnをアップロードできればOKです.
だから、正直に次のコードを開けましょう.つまり、FBXの材質名が正しくなければ、直接モデルを削除してあげましょう.そうすれば、モデルがないと自然美術は何とかして解決します.自然にDebug.LogErrorの情報を見ることができます.ハハ!!
FileUtil.DeleteFileOrDirectory(Application.dataPath+assetPath.Replace(“Assets”,””));
プロジェクトモデルに複数のマテリアルが必要な場合は、3 DMAXでモデルのデフォルトマテリアル、例えばmodelを定義することができます.0そしてモデル_1 model_2....はunityで作成されます.
長い間私たちは美術を理解しなければならないと言っていました.すべての美術の同級生は芸術家なので、芸術家は抽象的なことが好きで、あなたは彼に具体的で厳格なことをさせなければなりません.彼らも間違いを犯すに違いありません.だからプログラムとして私たちはやはり美術の同級生を助けて間違いを避けなければなりません.彼らの誤り率が低いと,私たちの仕事もすぐによくなる.へへへ!また、このような問題を解決する方法があれば、次のメッセージをください.の
固定リンク:http://www.xuanyusong.com/archives/3648 雨松MOMO 2015年09月14日雨松MOMOプログラム研究院にて発表
もし誰かが美術にこの材質の名前を書くのに間違いを訂正する必要があると言ったら、美術は一般的にunityでこの間違いのmaterialを直接削除し、unityで正しい名前の材質を作成します.続いて美術会はsvnをアップロードし、問題は解決したようだ.しかし、もう一人がこのプロジェクトを再チェックし、unityを開くと間違ったmaterialファイルがFBXに再生成され、徐々にプロジェクトのめちゃくちゃな材質が出てきます.
この問題を解決するために、fbxがこのmaterialファイルを生成することを禁止することを考えたので、次のコードがありました.
C#
usingUnityEngine;
usingSystem.Collections;
usingUnityEditor;
classDisableMaterialImport:AssetPostprocessor{
voidOnPreprocessModel()
{
ModelImporter modelImporter=assetImporter asModelImporter;
modelImporter.importMaterials=false;
}
}
しかし問題はすぐに来て、美術はやっとシーンを編集して、模型を調整すると計画しましょう.そこで新しいモデルを変えて、しまった!!新しいモデルは古いモデルのマテリアル情報に関連付けられていないためです.だからシーン中のマテリアルが失われました...実際には、美術がシーンを編集するときにprefabでやってもそうではありませんが、美術は一般的にprefabではありません.彼らはシーンを直接fbxをドラッグして、マテリアルが間違っていることに気づいたら、マテリアルを作成して、複数の部分をコピーする必要がある場合はctrl+dをクリックします.したがって、マテリアルが失われると、結果は想像できません.
そこで私はまた1つの方法を考えて、やはり自動的に材質のスイッチを生成します.ただし、マテリアル名はモデル名と一致する必要があります.一致しない場合、プログラムは誤った情報を美術に出力します.するとまた次のようなコードがありました.
using UnityEngine;
using System.Collections;
using UnityEditor;
classDisableMaterialImport:AssetPostprocessor{
voidOnPostprocessModel(GameObject model){
if(!assetPath.Contains("@")){
Renderer[]renderers=model.transform.GetComponentsInChildren();
for(inti=0;i
あら.私は本当にtoo young too simpleです!!何の警告だ、ヒントの間違いだ、美術はそれを気にしない.unityをインポートしてsvnをアップロードできればOKです.
だから、正直に次のコードを開けましょう.つまり、FBXの材質名が正しくなければ、直接モデルを削除してあげましょう.そうすれば、モデルがないと自然美術は何とかして解決します.自然にDebug.LogErrorの情報を見ることができます.ハハ!!
FileUtil.DeleteFileOrDirectory(Application.dataPath+assetPath.Replace(“Assets”,””));
プロジェクトモデルに複数のマテリアルが必要な場合は、3 DMAXでモデルのデフォルトマテリアル、例えばmodelを定義することができます.0そしてモデル_1 model_2....はunityで作成されます.
長い間私たちは美術を理解しなければならないと言っていました.すべての美術の同級生は芸術家なので、芸術家は抽象的なことが好きで、あなたは彼に具体的で厳格なことをさせなければなりません.彼らも間違いを犯すに違いありません.だからプログラムとして私たちはやはり美術の同級生を助けて間違いを避けなければなりません.彼らの誤り率が低いと,私たちの仕事もすぐによくなる.へへへ!また、このような問題を解決する方法があれば、次のメッセージをください.の
固定リンク:http://www.xuanyusong.com/archives/3648 雨松MOMO 2015年09月14日雨松MOMOプログラム研究院にて発表