今天闲来无事,便写了这个博客,大家感兴趣可以看看
首先,由于FBX是外部文件,并不能直接进行处理,所以我的思路是现将FBX文件制作成预制体,然后再打成AB包。
首先我们先在Assets工程目录下创建一个Editor文件夹,再新建一个脚本,我们将它取名为“MyCreateAB”,记住,一定要把这个脚本放在Editor目录下,只有这样Unity才能够将其识别为编辑器扩展脚本。
双击打开脚本进行一些小更改,先引用UnityEditor,System.IO,然后再继承自EditorWindow
using UnityEditor;
using System.IO;
public class MyCreateAB :EditorWindow
接下来再是扩展代码
//编辑器扩展
[MenuItem("My Tools/CreateAB")]
public static void CreateAB()
{
GetWindow<MyCreateAB>(true, "打包工具");
}
string filePath;
private void OnGUI()
{
GUILayout.Label("资源路径");
filePath = GUILayout.TextField(filePath);
if (GUILayout.Button("开始打包"))
{
CopyDirectory(filePath);
}
}
在这里我们在编辑器上新增了一个"My Tools"选项,然后在下面添加了一个"CreateAB"按钮
点击这个按钮便会打开一个窗口,而窗口内容我们就在OnGU里面进行编写I,我写的打开之后就会是下面这样
接下来便是重头戏了,关于逻辑的编写,首先我们直接将资源复制到我们工程的Resources目录下
public static void CopyDirectory(string filePath)
{
//将资源路径下的文件复制到工程Resources目录下
//创建Resources目录
if (!Directory.Exists(Application.dataPath + "/Resources"))
{
Directory.CreateDirectory(Application.dataPath + "/Resources");
}
DirectoryInfo mainInfo = new DirectoryInfo(filePath);
DirectoryInfo[] infos= mainInfo.GetDirectories();
for (int i = 0; i < infos.Length; i++)
{
//没有文件夹便创建文件
if (!Directory.Exists(Application.dataPath+ "/Resources/" + infos[i].Name))
{
Directory.CreateDirectory(Application.dataPath + "/Resources/" + infos[i].Name);
}
FileInfo[] files = infos[i].GetFiles();
for (int j = 0;