[Help] Дубликат материала в ассетах

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

[Help] Дубликат материала в ассетах

Сообщение TexeL 14 апр 2012, 07:41

Привет, пытаюсь дублировать материал в ассетах и закинуть новый на обжект, но при загрузке с AssetDatabase.LoadAssetAtPath материал не возвращается корректно (null). Что не так ?

Синтаксис:
Используется csharp
                                for (int i = 0; i < go.renderer.sharedMaterials.Length; ++i)
                                {
                                        string thePath = AssetDatabase.GetAssetPath(go.renderer.sharedMaterials[i]);
                                       
                                        int li = thePath.LastIndexOf("/");
                                        string assetName = thePath.Substring(li+1, thePath.Length-li-1);
                                        string assetPath = thePath.Substring(0, li+1);
                                       
                                        //Debug.Log(assetPath);
                                        //string folderGUID = AssetDatabase.AssetPathToGUID(assetPath);
                                        //string guid1 = AssetDatabase.CreateFolder("Assets", "ClonedMaterials");
                                        //AssetDatabase.Refresh();
                                        //assetPath = AssetDatabase.GUIDToAssetPath(guid1);
                                        //Debug.Log(assetPath);
                                       
                                        string newPath = assetPath + "clone" + assetName;
                                       
                                        //AssetDatabase.CopyAsset(thePath, newPath);
                                        //Debug.Log(newPath);
                                        //Material myNewMat = new Material(go.renderer.sharedMaterials[i]);
                                        AssetDatabase.CopyAsset(thePath, newPath);
                                        //AssetDatabase

                                        //newPath = AssetDatabase.GetAssetPath(myNewMat);
                                        //Debug.Log(newPath);
                                        //AssetDatabase.ImportAsset(newPath);
                                        AssetDatabase.SaveAssets();
                                        AssetDatabase.Refresh();
                                        AssetDatabase.ImportAsset(newPath);
                                        AssetDatabase.Refresh();
                                        Material m = (Material)AssetDatabase.LoadAssetAtPath(newPath, typeof(Material));
                                        //m = EditorUtility.InstantiatePrefab(m) as Material;
                                        //m = (Material)Instantiate(m);
                                       
                                        go.renderer.sharedMaterials[i] = m;
                                        //Debug.Log(AssetDatabase.GetAssetPath(m));
                                       
                                }
 
ИзображениеИзображение
Аватара пользователя
TexeL
UNITрон
 
Сообщения: 244
Зарегистрирован: 15 ноя 2009, 20:57
  • Сайт

Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3