赞
踩
推荐阅读
大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
随着项目开发的体量增大,要导入大量的素材、UI、模型之类的资源。
需要创建不同的文件夹进行整理,便于管理。
就写了一个小工具,在导入资源包的时候自动创建文件夹,这个包后期还可以增加常用的插件、代码的框架、数据类、单例类、工具类、已经实现的比较完善的功能等。
目前,先实现导入资源自动创建文件夹的功能吧。
首先,我们需要了解一下文件夹分类的规范。资源如何分类。
Unity的资源有很多,比如说动画、贴图、UI、音频、材质球、Shader、预制体、脚本
等等。
那么,比较常用的分类方式就是:
还有一些特殊文件夹:
文件夹名 | 详解 |
---|---|
Resources | 用于存储需要在运行时动态加载的资源,例如音效、纹理、预制件等。这些资源可以通过Unity的Resources API在运行时加载。(进底包的资源才可以直接使用Resources API) |
StreamingAssets | 放打完的AB包,发包的时候这里的会进apk包。该文件夹用于存储需要和应用程序一起打包的数据,如视频文件和音乐文件。 |
Plugins | 第三方库,只依赖自己。必须位于 Assets 文件夹的外部。文件夹是另一个特殊文件夹,用于存储第三方插件或库。Plugins 文件夹通常包含原生代码或外部库,例如 C++ 代码、动态链接库或共享对象文件等,这些文件可被 Unity 编辑器或运行时程序调用。 |
林新发大佬比较推荐的分类方式:
这篇文章,就根据一般的文件夹分类方式继续进行了。
在Assets/Scripts/Editor
文件夹下,新建脚本命名为CreateProjectFloder,双击打开脚本编辑代码:
using UnityEditor; using UnityEngine; using System.IO; public class CreateProjectFloder { /// <summary> /// 根目录文件夹名(多人开发时,区分各自的文件夹,为空的时候在根目录创建) /// </summary> private static string _rootFolderName = ""; /// <summary> /// 公有文件夹 /// </summary> private static string _singleFolderArray = "Resources,StreamingAssets,Plugins"; /// <summary> /// 多人开发各自文件夹 /// </summary> private static string _folderArray = "Animation,Audio,Scenes,Texture,Materials,Shaders,Prefabs,Scripts"; /// <summary> /// Asset目录路径 /// </summary> private static string _assetPath = Application.dataPath; /// <summary> /// 在Project创建指定文件夹 /// </summary> [MenuItem("Tools/CreateProjectFolder")] public static void CreatAllProjectFolder() { string[] _strArr = _folderArray.Split(','); foreach (string str in _strArr) { string _folderPath = _assetPath + "/" + _rootFolderName + "/" + str; if (!Directory.Exists(_folderPath)) Directory.CreateDirectory(_folderPath); } string[] _singleArr = _singleFolderArray.Split(','); foreach (string str in _singleArr) { string _folderPath = _assetPath + "/" + str; if (!Directory.Exists(_folderPath)) Directory.CreateDirectory(_folderPath); } //刷新目录 AssetDatabase.Refresh(); } }
代码没有什么要说的,就是简单的创建文件夹,刷新目录。
Unity编译后,在窗口菜单上就会出现这个菜单栏:
但这个不是我们想要的效果,我们需要在导入这个资源包
的时候自动创建文件夹。
导入资源包
,这里选择一般的unitypackage包
拖入到Unity中的方式。
后面还可以通过Unity的Package Manager管理器
或者配置manifest.json文件
来导入资源包,这个以后再说。
接着,就是在Assets/Scripts/Editor
文件夹下,新建脚本命名为AutoCreateFloder,双击打开脚本编辑代码:
using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; /// <summary> /// 自动导入资源创建文件夹 /// </summary> public class AutoCreateFloder : AssetPostprocessor { static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string s in importedAssets) { if (s.Equals("Assets/Scripts/Editor/AutoCreateFloder.cs")) { CreateProjectFloder.CreatAllProjectFolder(); return; } } } }
选中这个脚本选择Export Paclage导出:
导出后,新建一个新项目,将这个包导入后,就会自动创建文件夹了:
本篇文章实现了在创建项目后,导入资源包后,自动创建文件夹的功能。
整体来说比较简单(代码),流程的话对于初学者可能不太理解有什么用。
但是对于开发项目比较多的,可以有效的提高效率。
好啦
如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。
你的点赞就是对博主的支持,有问题记得留言:
博主主页有联系方式。
博主还有跟多宝藏文章等待你的发掘哦:
专栏 | 方向 | 简介 |
---|---|---|
Unity3D开发小游戏 | 小游戏开发教程 | 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。 |
Unity3D从入门到进阶 | 入门 | 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。 |
Unity3D之UGUI | UGUI | Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。 |
Unity3D之读取数据 | 文件读取 | 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。 |
Unity3D之数据集合 | 数据集合 | 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。 |
Unity3D之VR/AR(虚拟仿真)开发 | 虚拟仿真 | 总结博主工作常见的虚拟仿真需求进行案例讲解。 |
Unity3D之插件 | 插件 | 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等 |
Unity3D之日常开发 | 日常记录 | 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等 |
Unity3D之日常BUG | 日常记录 | 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。