Помогите пожалуйста с решением ошибки скрипта

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Помогите пожалуйста с решением ошибки скрипта

Сообщение DKGoose 28 ноя 2022, 20:24

И снова всем здравствуйте! Использовал ассет в юнити и после загрузки вылезает две ошибки со скриптом. Пробовал исправить сам, пробовал найти в интернете, но вообще ничего не смог найти. Буду благодарен если подскажете в чем может быть проблема в скрипте.
Изображение
Сам скрипт:
Синтаксис:
Используется csharp
namespace Voxel2Unity {

        using UnityEngine;
        using UnityEditor;
        using System.Collections;
        using System.Collections.Generic;
        using System.IO;
       

        public class Postprocessor : AssetPostprocessor {


                public static List<string> PathQueue = new List<string>();



                #region --- API ---



                public static void AddToQueue (string path) {
                        PathQueue.Add(Util.RelativePath(path));
                }



                public static void ClearQueue () {
                        PathQueue.Clear();
                }


                #endregion


                #region --- MSG ---




                public void OnPreprocessModel () {

                        string path = Util.RelativePath(assetPath);

                        if (PathQueue.Contains(path)) {
                                PathQueue.Remove(path);

                                if (assetImporter) {
                                        ModelImporter mi = assetImporter as ModelImporter;
                                        mi.importMaterials = true;
                                        mi.materialSearch = ModelImporterMaterialSearch.Local;
                                        mi.importAnimation = false;
                                        mi.importBlendShapes = false;
#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_4
                                        mi.normalImportMode = ModelImporterTangentSpaceMode.Calculate;
#else
                                        mi.importNormals = ModelImporterNormals.Calculate;
#endif
                                        mi.normalSmoothingAngle = 0f;

                                        string fileName = Util.GetName(path);
                                        EditorApplication.delayCall += () => {
                                                string parentPath = Util.RelativePath(new FileInfo(path).Directory.FullName);
                                                FileInfo[] infos = new DirectoryInfo(parentPath + "/Materials").GetFiles("*.mat");
                                                for (int i = 0; i < infos.Length; i++) {
                                                        Material mat = AssetDatabase.LoadAssetAtPath<Material>(Util.RelativePath(infos[i].FullName));
                                                        if (
                                                                mat &&
                                                                (mat.name.StartsWith(fileName.Replace(' ', '_')) ||
                                                                mat.name.StartsWith(fileName))
                                                        ) {
                                                                Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(parentPath + "/" + fileName + ".png");
                                                                if (texture) {
                                                                        mat.mainTexture = texture;
                                                                        Shader shader = VoxelToUnityWindow.TheShader;
                                                                        if (shader) {
                                                                                mat.shader = shader;
                                                                        }
                                                                }
                                                        }
                                                }
                                        };

                                }


                        }


                }




                void OnPostprocessTexture (Texture2D texture) {
                        string path = Util.RelativePath(assetPath);
                        if (PathQueue.Contains(path)) {
                                PathQueue.Remove(path);
                                TextureImporter ti = assetImporter as TextureImporter;
                                ti.alphaIsTransparency = true;
                                ti.filterMode = FilterMode.Point;
                                ti.mipmapEnabled = false;
                                ti.wrapMode = TextureWrapMode.Clamp;
                                ti.isReadable = true;
#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_4
                                ti.textureFormat = TextureImporterFormat.AutomaticTruecolor;
                                ti.textureType = TextureImporterType.Advanced;
#else
                                ti.textureType = TextureImporterType.Default;
                                ti.textureCompression = TextureImporterCompression.Uncompressed;
#endif
                                ti.npotScale = TextureImporterNPOTScale.None;
                                ti.maxTextureSize = 8192;
                                AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceSynchronousImport);
                        }
                }



                #endregion


        }
}
 
DKGoose
UNец
 
Сообщения: 12
Зарегистрирован: 02 ноя 2022, 15:12

Ошибка со скриптом

Сообщение DKGoose 03 дек 2022, 16:26

Всем привет! Импортировал ассет в юнити, но меня встретили две красные ошибки.. Уже какое время пытаюсь найти ответ на решение этой проблемы и уже даже сам пробовал куча раз, но ничего не помогает. Может хотя бы кто-нибудь подскажет в чем может быть ошибка или это я криво что-то сделал? :D
Сами ошибки:
Assets\VoxelToUnity v1.4.2\Editor\Postprocessor.cs(48,6): error CS0619: 'ModelImporter.importMaterials' is obsolete: 'importMaterials has been removed. Use materialImportMode instead.'
Assets\VoxelToUnity v1.4.2\Editor\Postprocessor.cs(48,6): error CS0200: Property or indexer 'ModelImporter.importMaterials' cannot be assigned to -- it is read only
Сам скрипт:
Синтаксис:
Используется csharp
namespace Voxel2Unity {

        using UnityEngine;
        using UnityEditor;
        using System.Collections;
        using System.Collections.Generic;
        using System.IO;

        public class Postprocessor : AssetPostprocessor {


                public static List<string> PathQueue = new List<string>();



                #region --- API ---



                public static void AddToQueue (string path) {
                        PathQueue.Add(Util.RelativePath(path));
                }



                public static void ClearQueue () {
                        PathQueue.Clear();
                }


                #endregion


                #region --- MSG ---




                public void OnPreprocessModel () {

                        string path = Util.RelativePath(assetPath);

                        if (PathQueue.Contains(path)) {
                                PathQueue.Remove(path);

                                if (assetImporter) {
                                        ModelImporter mi = assetImporter as ModelImporter;
                                        mi.importMaterials = true;
                                        mi.materialSearch = ModelImporterMaterialSearch.Local;
                                        mi.importAnimation = false;
                                        mi.importBlendShapes = false;
#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_4
                                        mi.normalImportMode = ModelImporterTangentSpaceMode.Calculate;
#else
                                        mi.importNormals = ModelImporterNormals.Calculate;
#endif
                                        mi.normalSmoothingAngle = 0f;

                                        string fileName = Util.GetName(path);
                                        EditorApplication.delayCall += () => {
                                                string parentPath = Util.RelativePath(new FileInfo(path).Directory.FullName);
                                                FileInfo[] infos = new DirectoryInfo(parentPath + "/Materials").GetFiles("*.mat");
                                                for (int i = 0; i < infos.Length; i++) {
                                                        Material mat = AssetDatabase.LoadAssetAtPath<Material>(Util.RelativePath(infos[i].FullName));
                                                        if (
                                                                mat &&
                                                                (mat.name.StartsWith(fileName.Replace(' ', '_')) ||
                                                                mat.name.StartsWith(fileName))
                                                        ) {
                                                                Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(parentPath + "/" + fileName + ".png");
                                                                if (texture) {
                                                                        mat.mainTexture = texture;
                                                                        Shader shader = VoxelToUnityWindow.TheShader;
                                                                        if (shader) {
                                                                                mat.shader = shader;
                                                                        }
                                                                }
                                                        }
                                                }
                                        };

                                }


                        }


                }




                void OnPostprocessTexture (Texture2D texture) {
                        string path = Util.RelativePath(assetPath);
                        if (PathQueue.Contains(path)) {
                                PathQueue.Remove(path);
                                TextureImporter ti = assetImporter as TextureImporter;
                                ti.alphaIsTransparency = true;
                                ti.filterMode = FilterMode.Point;
                                ti.mipmapEnabled = false;
                                ti.wrapMode = TextureWrapMode.Clamp;
                                ti.isReadable = true;
#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_4
                                ti.textureFormat = TextureImporterFormat.AutomaticTruecolor;
                                ti.textureType = TextureImporterType.Advanced;
#else
                                ti.textureType = TextureImporterType.Default;
                                ti.textureCompression = TextureImporterCompression.Uncompressed;
#endif
                                ti.npotScale = TextureImporterNPOTScale.None;
                                ti.maxTextureSize = 8192;
                                AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceSynchronousImport);
                        }
                }



                #endregion


        }
}
 
DKGoose
UNец
 
Сообщения: 12
Зарегистрирован: 02 ноя 2022, 15:12

Re: Ошибка со скриптом

Сообщение Alkos26Rus 03 дек 2022, 16:42

вот же у тебя строка походу устаревшая
mi.importMaterials = true;

попробуй вместо этого
mi.materialImportMode = ....(тут уже сам смотри какой тип параметра и какие вобще есть варианты)
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Ошибка со скриптом

Сообщение DKGoose 03 дек 2022, 17:11

После этого вылезает эта ошибка :D :
Assets\VoxelToUnity v1.4.2\Editor\Postprocessor.cs(48,30): error CS0029: Cannot implicitly convert type 'bool' to 'UnityEditor.ModelImporterMaterialImportMode'
Уже пробовал пофиксить, но тоже что-то не идет)
DKGoose
UNец
 
Сообщения: 12
Зарегистрирован: 02 ноя 2022, 15:12

Re: Ошибка со скриптом

Сообщение Alkos26Rus 03 дек 2022, 17:17

DKGoose писал(а):После этого вылезает эта ошибка :D :
Assets\VoxelToUnity v1.4.2\Editor\Postprocessor.cs(48,30): error CS0029: Cannot implicitly convert type 'bool' to 'UnityEditor.ModelImporterMaterialImportMode'
Уже пробовал пофиксить, но тоже что-то не идет)

Скидывай строку кода на что выдает ошибку, явно ты там написал че то не то
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Ошибка со скриптом

Сообщение DKGoose 03 дек 2022, 17:30

mi.materialImportMode = true;
Поменял эту строку (48)
DKGoose
UNец
 
Сообщения: 12
Зарегистрирован: 02 ноя 2022, 15:12

Re: Ошибка со скриптом

Сообщение Alkos26Rus 03 дек 2022, 18:03

DKGoose писал(а):mi.materialImportMode = true;
Поменял эту строку (48)

Да блин, понятно что ее поменял, я же тебе о ней и писал, на что ты ее поменял?
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Ошибка со скриптом

Сообщение DKGoose 03 дек 2022, 18:08

Думаю не сложно догадаться, что я поменял с mi.importMaterials = true; на mi.materialImportMode = true;
DKGoose
UNец
 
Сообщения: 12
Зарегистрирован: 02 ноя 2022, 15:12

Re: Ошибка со скриптом

Сообщение Alkos26Rus 03 дек 2022, 18:14

DKGoose писал(а):Думаю не сложно догадаться, что я поменял с mi.importMaterials = true; на mi.materialImportMode = true;

Да уж

кароче пришлось вижуал открывать
mi.materialImportMode = UnityEditor.ModelImporterMaterialImportMode.Import;

это тоже вроде устаревший подход, но должен работать без ошибок, учись работать с вижуалстудио и пользоваться его подсказками, иначе так будет каждую ошибку строчить на форуме
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Ошибка со скриптом

Сообщение DKGoose 03 дек 2022, 19:14

Хм, на удивление это действительно сработало. Благодарю!) По поводу изучения так это дело времени. Я только осваивать все начал и вот бывают косяки)
DKGoose
UNец
 
Сообщения: 12
Зарегистрирован: 02 ноя 2022, 15:12


Вернуться в Почемучка

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

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


cron