Unity自动清理空文件夹

本文介绍了Unity项目因Git无法上传空文件夹而产生的问题,以及如何通过CleanEmptyDir插件和自定义代码实现自动清理空文件夹,避免Git冲突。同时提醒在烘焙场景时需要注意防止误删光照贴图,并提及使用UniRx库的注意事项和功能关闭后的自动恢复设置。
摘要由CSDN通过智能技术生成

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(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值