Unity 右键快捷进行SVN操作

2024-08-24 19:32

本文主要是介绍Unity 右键快捷进行SVN操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原因

Unity 项目使用 SVN 进行版本管理,每当需要更新或提交文件的时候,都需要切换到 Windows 资源管理器,进入项目文件夹里面进行 SVN 操作,非常繁琐。

方法

直接集成 SVN 操作到 Unity 里面,在 Project 视图里,实现右键快捷进行 SVN 操作。

这里写图片描述

使用的是 TortoiseSVN 提供的命令行方式,详细参数说明可以查看:https://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/tsvn-automation.html#tsvn-automation-basics

步骤

新建编辑器脚本文件SVNTool.cs

using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;namespace Tools
{public static class SVNTool{/// <summary>/// SVN更新指定的路径/// 路径示例:Assets/1.png/// </summary>/// <param name="assetPaths"></param>public static void UpdateAtPath(string assetPath){List<string> assetPaths = new List<string>();assetPaths.Add(assetPath);UpdateAtPaths(assetPaths);}/// <summary>/// SVN更新指定的路径/// 路径示例:Assets/1.png/// </summary>/// <param name="assetPaths"></param>public static void UpdateAtPaths(List<string> assetPaths){if (assetPaths.Count == 0){return;}string arg = "/command:update /closeonend:0 /path:\"";for (int i = 0; i < assetPaths.Count; i++){var assetPath = assetPaths[i];if (i != 0){arg += "*";}arg += assetPath;}arg += "\"";SvnCommandRun(arg);}/// <summary>/// SVN提交指定的路径/// 路径示例:Assets/1.png/// </summary>/// <param name="assetPaths"></param>public static void CommitAtPaths(List<string> assetPaths, string logmsg = null){if (assetPaths.Count == 0){return;}string arg = "/command:commit /closeonend:0 /path:\"";for (int i = 0; i < assetPaths.Count; i++){var assetPath = assetPaths[i];if (i != 0){arg += "*";}arg += assetPath;}arg += "\"";if (!string.IsNullOrEmpty(logmsg)){arg += " /logmsg:\"" + logmsg + "\"";}SvnCommandRun(arg);}[MenuItem("Assets/SVN Tool/SVN 更新")]private static void SvnToolUpdate(){List<string> assetPaths = SelectionUtil.GetSelectionAssetPaths();UpdateAtPaths(assetPaths);}[MenuItem("Assets/SVN Tool/SVN 提交...")]private static void SvnToolCommit(){List<string> assetPaths = SelectionUtil.GetSelectionAssetPaths();CommitAtPaths(assetPaths);}[MenuItem("Assets/SVN Tool/显示日志")]private static void SvnToolLog(){List<string> assetPaths = SelectionUtil.GetSelectionAssetPaths();if (assetPaths.Count == 0){return;}// 显示日志,只能对单一资产string arg = "/command:log /closeonend:0 /path:\"";arg += assetPaths[0];arg += "\"";SvnCommandRun(arg);}[MenuItem("Assets/SVN Tool/全部更新", false, 1100)]private static void SvnToolAllUpdate(){// 往上两级,包括数据配置文件string arg = "/command:update /closeonend:0 /path:\"";arg += "..";arg += "\"";SvnCommandRun(arg);}[MenuItem("Assets/SVN Tool/全部日志", false, 1101)]private static void SvnToolAllLog(){// 往上两级,包括数据配置文件string arg = "/command:log /closeonend:0 /path:\"";arg += "..";arg += "\"";SvnCommandRun(arg);}/// <summary>/// SVN命令运行/// </summary>/// <param name="arg"></param>private static void SvnCommandRun(string arg){string workDirectory = Application.dataPath.Remove(Application.dataPath.LastIndexOf("/Assets", StringComparison.Ordinal));System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo{UseShellExecute = false,CreateNoWindow = true,FileName = "TortoiseProc",Arguments = arg,WorkingDirectory = workDirectory});}}
}

新建编辑器脚本文件SelectionUtil.cs

using System;
using System.Collections.Generic;
using UnityEditor;public class SelectionUtil
{/// <summary>/// 得到选中资产路径列表/// </summary>/// <returns></returns>public static List<string> GetSelectionAssetPaths(){List<string> assetPaths = new List<string>();// 这个接口才能取到两列模式时候的文件夹foreach (var guid in Selection.assetGUIDs){if (string.IsNullOrEmpty(guid)){continue;}string path = AssetDatabase.GUIDToAssetPath(guid);if (!string.IsNullOrEmpty(path)){assetPaths.Add(path);}}return assetPaths;}
}

这篇关于Unity 右键快捷进行SVN操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103397

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点