Unity 导入项目时Resolving Packages卡住的解决方案

Posted 豆沙__

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 导入项目时Resolving Packages卡住的解决方案相关的知识,希望对你有一定的参考价值。

问题描述

如题。导入《Unity 3D ShaderLab 开发实战详解(第三版)》书中配套项目时,长时间卡在Resolving Packages页面不动

解决方案

参考文章:Unity骚操作:针对 Resolving Packages卡住的问题
注:本文给出的操作方法恰巧成功,仅供参考

1.打开unity hub,创建对应版本下的一个新项目
项目要求的版本是2019.3.0f1所以选择创建一个对应版本的新的3D项目

创建完成后打开项目所在目录,如下

2.用新项目里的部分文件替换无法打开的项目的文件
原本想要打开的项目目录如下
删除无法打开项目Packages文件夹下的manifest.json文件和Library->PackageCache文件夹下的所有文件

分别将新项目Packages中的manifest.json文件和Library->PackageCache文件夹下的一系列文件复制到上述文件夹

文件替换完成后项目可以顺利打开

在 Unity3D 中创建自定义导入器时如何避免项目视图中有两个文件?

【中文标题】在 Unity3D 中创建自定义导入器时如何避免项目视图中有两个文件?【英文标题】:How to avoid two files in project view when creating a custom importer in Unity3D? 【发布时间】:2015-04-27 04:21:30 【问题描述】:

注意:我的网络比 Unity Answers 更广泛,我的原始问题可以在 here 找到。

我创建了一个 ProTools CueSheet 导入器。它使用OnPostprocessAllAssets() 来检测项目中具有.cuesheet 扩展名的文件。然后它通过我的解析器运行这些 cuesheet 文件。这会生成一个 ScriptableObject,然后通过Database.CreateAsset() 将其转换为资产。

问题是,这给我留下了两个文件,原始的 cuesheet 和新生成的资产。有什么方法可以生成资源,例如原始 cuesheet 充当资源,就像纹理或 FBX 文件一样?

public class CueSheetPostProcessor : AssetPostprocessor 
    static string extension = ".cuesheet";

    static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) 
        foreach (string assetPath in importedAssets) 
            if (assetPath.EndsWith(extension, StringComparison.OrdinalIgnoreCase)) 
                string newPath = assetPath + ".asset";
                Session session = CueImporter.Load(assetPath);
                AssetDatabase.CreateAsset(session, newPath);
                AssetDatabase.SaveAssets();
            
        
    

【问题讨论】:

我怀疑这是不可能的,但我不是 99% 确定。同时拥有两个文件可能不方便,但有什么主要缺点吗? @golergka 它混淆了什么是资产和什么是源文件。 FBX、WAV、MP3等大量核心类型都进行了原地转换。例如,FBX 旁边没有资产。有一些关于这些被称为“表示”的非常少量的文档。我正在尝试确定自定义格式是否可行,但我无法证明在 Unity Asset Store 上下载价值数百美元的进口商来挖掘其来源只是为了找出答案。 Unity 导入 Assets 时,会在项目下的 Library 文件夹中创建它实际使用的文件。如果您查看属于例如 WAV 的 .meta 文件(如果它以二进制形式显示,请将其设置为项目设置中的文本),您会在那里找到一个 guid,并且您会找到一个名为 guid 的文件库文件夹。也许你可以对你的进口商做同样的事情? 据我所知,Library 文件夹只是项目的缓存。这是存储 wav 或 png 的优化版本的地方。开发人员无法控制 Library 文件夹; Unity 完全管理它。 【参考方案1】:

我将为SerializableCueSheet 创建一个PropertyDrawer,以便它接受.cueSheet TextAsset.cueSheet 文件的路径并创建CueSheet 类的实例并分配或修改它。

【讨论】:

这听起来很有希望。你有什么可以推荐的参考资料吗? 我已经对此进行了研究,它实际上只是一个检查器增强功能。这实际上是 Unity 处理导入 FBX 文件、音频和纹理的方式吗? 不知道是不是和unity处理的方式一样,但是可以给你prefab的行为,类似于unity的prefab。【参考方案2】:

您是否尝试过使用 AssetDatabase.AddObjectToAsset 而不是创建新资产? Assets 中的文件可以“保存”多个资产和多种资产类型。导入 .fbx 时,项目检查器中的输出是几样东西:游戏对象树(即预制件)、一些模型,可能还有装备等等。所有这些都“包含”在处理后的 .fbx 中

【讨论】:

以上是关于Unity 导入项目时Resolving Packages卡住的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何将 sbt pack 插件导入项目

Unity资源导入

在 Unity3D 中创建自定义导入器时如何避免项目视图中有两个文件?

Unity 5 中的运行时法线贴图导入

玛雅动画导入unity颠倒了

nuget pack命令不包括Microsoft unity