赞
踩
Unity中的资源管理有时非常鸡肋,当你导入一个新的素材或资源包(恰巧这个资源没有根目录),它子文件会分散在你的项目文件中,管理起来非常麻烦。接着我找到了国外大佬在论坛中的经验。我觉得可以很好的解决这个问题,所以我将它翻译过来放在这里,以防有人踩这一坑。
ps:csdn好像没有这个方法的翻译,我将它人工翻译过来(机翻有些细节不准确)。
我刚刚整理了我的assets文件夹,但是每一次我导入一些文件,unity都会把所以文件都放入根目录里,我要怎样做才能将我要导入的文件放入一个特定的文件夹中。
编辑:因为很难找到答案,没有人能很好的回答这个问题,所以我做了很多功课,现在我可以自己出答案,以防有人碰到同样的问题。这个问题会影响到每一位Unity开发者。接下来是我建议的解决方法(这个方法基于Unity开发大佬)。
创造这个Assets 文件结构
根目录:
3rdParty
_Core
Editor
Gizmos
Plugins
Resources
Sandbox
Standard Assets
StreamingAssets
提示:“Sandbox”仅仅是为了测试。“_Core”是我存放所有我确定的已经被游戏使用的文件。由于导入Asset Store的资源会被放入根目录,我就让它们这样导入,之后将它们拖入"3rdParty"中直到我真正想在游戏中用它们,我才会将它们拖入我的"_Core"文件夹中。这就意味着我会精心挑选特定的资源和脚步加入"_Core",同时删除我不想要的,因为Asset Store的资源包会包含一大堆不相关的素材。
提示:“3rdParty”是你应该拖入你所有从Asset Store导入的素材的地方。一少部分开发者(像Gaia)可能因为太懒不会这样做,但是90%都会将它们拖入“3rdParty”文件夹。你将知道,如果你看到了一个“cannot create”错误那么这个资源将不会起作用(在你将它拖入到一个子目录时),之后你将会意识到这个资源是很特殊的它必须待在特定的目录中才会起作用。但是大部分的资源都是可以成功地拖入进一个子文件夹而没有任何问题。我是怎么做的当我知道我正在使用一些素材的呢?我会尝试将它们从3rdParty文件夹中拖拽入"_Core"文件夹中。如果我只使用很少的模型。我就将它们从3rdParty中拖入”_Core/_3DModels/_Furniture“文件夹中。其他素材也是如此。
提示:在这“Core”文件夹中,我使用了下划线“”来标记它来表示它们就是我在游戏中使用的文件,这并不是Unity官方要求这样做的。但是这样可以让你很轻松的看到那个是你明确使用在游戏中的。因此,这个"_Core"文件夹是"最终"目录。在这个文件夹中,"_Data"是可编辑对象,或者任何你有可能用到的数据。材质应该和真正的模型储存在"3DModels"中,预制体也应该这样(将相关素材放在一起,例如3D模型和它的材质)。你可任意创建所有你需的子文件夹。我发现到最后我的“_3DModels”文件夹将会有许多的子文件夹和资源。
第二层,在”_Core”文件夹中:
_Core _3DModels /Characters /FarmStuff /NakedBunnyBoss /NakedBunnyHouse /Vegetation _Animations _Audio /Ambience /SFX /Music _Data _GUI _Scripts _Skybox _SomeOtherMasterFolder SomeUnityStoreAssetPackageFolder _Terrain _Textures _Timelinessad
对于2D的项目,你可能需要“Sprite”和2D资源文件夹而不是“3DModels”或“Terrain”。
无论何时导入新资源,它都会分散存入assets文件夹中,而不考虑它是否有序。使用上述文件夹方法可以更容易地找到它创建的文件夹,因为我自己的文件夹被“”标记了。因此你可以很快的辨别那个是被导入的文件。你会更加感激这个方法,如果你使用了许多资源,或尝试导入新资源。这是非常糟糕的如果导入的一个新资源将你的目录打乱,而这种方式可以避免这种情况。列如,我几天前安装“NoesisGUI”,它创了4个文件夹并将文件发在了所以的位置,这将让它很难被卸载。我不认为这些开发者思考过他们的文件夹与许多文件夹在一起的情况。使用上述文件夹结构,你可保持有序和保持你的目录极度的干净。这样很轻松地看到那个资源被存入。
特定的文件夹必须待在根目录中。“Gizmos”就是其中之一,它被Unity直接使用,与之类似的有“Resources”,”StreamedAssets”和“Standard Assets”.个人观点,我喜欢将“Editor”文件夹放在main文件中,因为它不应该被游戏所编译。默认情况下,Unity不会编译包含在“Editor”文件夹中的任何东西。
大多数资源包能被脱入到一个子文件夹中,但是一些Unity Store资源使用了绝对路径,可能这个开发者没有考虑它们会被移动。所以我建议不要去移动它们如果你看到了红色的错误提示。开发者犯了一个新手错误没有考虑到它们会别移动。在这些情况下,我不会使用这些不能被移动的素材,因为这体现了其缺少开发技巧。但这也分情况,如3Dmodels一般能被移动,诸如此类还有很多。而我仅知道很少资源文件使用的是绝对路径。
一些游戏开发者想知道如果Unity Store 资源被移动了那么它的自动更新会成功吗?,一个好消息是,它会被成功地更新。当你更新时Unity仍然会找到这个文件。这真是不可思议的事,我非常喜欢Unity的这一点。
如果你在你的项目文件夹中发现了一个很好并且齐全的子文件夹,你可以将它导出为以后使用。
关于空文件夹的提示:
当你创造了一个自定义asset package作为一个模板,Unity 不会将空文件夹包含其中。这点很让我苦恼,因为一个被命名的空文件夹可以占好一个位置,方便我之后使用。所以我会电脑的文件夹中找到这个项目文件并将它手动复制一份,作为一个工程模板。因此我通过模板新开一个项目时那里面就有我需要的文件结构和工具。
编译太慢?使用Plugins文件夹:
Unity会尝试编译所有在项目中的脚本,即使你只做了一点微小的改动。这将拖慢你的工作,尤其是在旧电脑上。我的意思是每一次你编辑脚本后回来Unity会暂停一段时间去编译它们,为了避免这种时间的浪费,这里有一个文件夹“Plugins”可以用来临时的取消此操作。任何在“Plugins”中的脚本会被Unity编译器的“重新编译规则”所忽视。这意味着你将脚步放在“Plugins”中后你对它做的任何修改都不会被编译。在进一步,你可以将你的“_Core”和“3rdParty”文件夹拖入“Plugins中”,Unity不会编译“Plugins”文件夹,除非你特别更改其中的脚本。这将会减少大量的开发时间。当你完成了项目并准备编译和发表,保存你的项目备份。之后将“_Core”拖回根目录,再删除“3rdParty“,在你最终游戏版本中只保留游戏所需要的素材。
https://forum.unity.com/threads/is-there-a-way-to-import-a-package-to-a-specific-folder.173393
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。