Unity 自动清理空文件夹
因为项目管控用的是Git,没法上传空文件夹。但是Unity又会对空文件夹生成相应的meta文件。导致Git提交的时候会提交这些meta文件。当项目中其他人拉下来的时候Unity又会将这些meta文件进行删除。一来二去冲突就来了。
使用CleanEmptyDir插件
插件挺好用的,就是美术还是不会去点进去自己清理一遍。所以,决定自己把它改成纯自动的。
代码实现
清理的核心代码还是用的插件的,然后把搜索部分开了个线程来跑。然后加了个自动清理的功能。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using UniRx;
using UnityEditor;
using UnityEngine;
namespace AltProg.CleanEmptyDir
{
[InitializeOnLoad]
public class AutoCleanEmptyDir
{
/// <summary>
/// 资源地址
/// </summary>
private static readonly string dataPath;
/// <summary>
/// 是否正在清理
/// </summary>
private static bool cleaning;
/// <summary>
/// 自动清理触发事件
/// </summary>
private static readonly BoolReactiveProperty autoCleanDir = new BoolReactiveProperty();
/// <summary>
/// 定时清理事件
/// </summary>
private static IDisposable timerClean;
static AutoCleanEmptyDir()
{
dataPath = Application.dataPath;
CheckAutoCleanDir();
autoCleanDir.Subscribe(OnAutoClean);
}
/// <summary>
/// 自动清理启动函数
/// </summary>
private static void AutoClean()
{
if (cleaning) return;
Debug.Log("检测到工程资源变动,开始检查是否有空文件夹。");
Observable.Start(FindEmptyDir).ObserveOnMainThread(<