Unity扩展SVN命令

Unity SVN 管理(一) Unity项目SVN管理:因为项目一直都是乱七八糟的,之前在做网站开发的时候,有过一部分SVN的管理经验,之前架设过一个SVN服务器,但是因为项目只有两个人开发,就使用了一段时间之后就不再使用了。现在逐渐的项目变得比较多,而且,安卓和IOS项目的有所不同,我重新开启了SVN服务器。将这段时间所建的项目,模型,音效等等资源放入服务器中以便于统一管理。今天先讲述一下SVN服务器的搭建。SVN服务器的搭建 阅读详情

可以直接在unity里右键文件提交和查看提交记录
在这里插入图片描述
顶部菜单栏上回退和更新整个unity工程
在这里插入图片描述
SvnForUnity.CS
记得要放在Editor文件夹下

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using UnityEditor;
using UnityEngine;
using Debug = UnityEngine.Debug;

public class SvnForUnity
{
    static string SVN_BASE = Application.dataPath.Replace("/", "\\").Remove(Application.dataPath.Replace("/", "\\").Length - 6, 6);
    
    /// <summary>
    /// 调用cmd命令
    /// </summary>
    /// <param name="command">cmd命令</param>
    /// <param name="argument">命令参数</param>
    private static void ProcessCommand(string command, string argument)
    {
        ProcessStartInfo start = new ProcessStartInfo(command)
        {
            Arguments = argument,
            CreateNoWindow = false,
            ErrorDialog = true,
            UseShellExecute = true//明确传入的执行文件类型
        };

        if (start.UseShellExecute)
        {
            start.RedirectStandardOutput = false;
            start.RedirectStandardError = false;
            start.RedirectStandardInput = false;
        }
        else
        {
            start.RedirectStandardOutput = true;
            start.RedirectStandardError = true;
            start.RedirectStandardInput = true;
            start.StandardOutputEncoding = System.Text.Encoding.UTF8;
            start.StandardErrorEncoding = System.Text.Encoding.UTF8;
        }

        Process p = Process.Start(start);
        
        p.WaitForExit();
        p.Close();
    }
    
    static string MetaFile(string str)
    {
        return str + ".meta";
    }

    static string GetSelectFilePath()
    {
        var selectAssets = Selection.GetFiltered<Object>(SelectionMode.Assets);
        if (selectAssets.Length > 0)
        {
            string selectionPath = string.Empty;
            for (int i = 0; i < selectAssets.Length; i++)
            {
                // Debug.Log(AssetDatabase.GetAssetPath(selectAssets[i]));
                if (AssetDatabase.GetAssetPath(selectAssets[i]) == "Assets")
                {
                    return SVN_BASE + "Assets" + "\"";
                }
                if (i > 0)
                {
                    selectionPath = selectionPath + "*" + SVN_BASE + AssetDatabase.GetAssetPath(selectAssets[i]).Replace("/", "\\");
                    selectionPath = selectionPath + "*" + SVN_BASE + MetaFile(AssetDatabase.GetAssetPath(selectAssets[i])).Replace("/", "\\");
                }
                else
                {
                    selectionPath = SVN_BASE + AssetDatabase.GetAssetPath(selectAssets[i]).Replace("/", "\\");
                    selectionPath = selectionPath + "*" + SVN_BASE + MetaFile(AssetDatabase.GetAssetPath(selectAssets[i])).Replace("/", "\\");
                }
            }

            return selectionPath  + "\"";
        }

        return SVN_BASE + "Assets" + "\"";
    }
    
    /// <summary>
    /// SVN更新
    /// </summary>
    [MenuItem("SVN/Update", false, 1)]
    public static void SvnUpdate()
    {
        ProcessCommand("TortoiseProc.exe", "/command:update /path:\"" + SVN_BASE + "Assets" + "\"");
    }
    
    /// <summary>
    /// SVN提交
    /// </summary>
    [MenuItem("Assets/SVN/Commit", false, 2)]
    public static void SvnCommit()
    {
        var selectPath = GetSelectFilePath();
        ProcessCommand("TortoiseProc.exe", "/command:commit /path:\"" + selectPath);
    }
    
    /// <summary>
    /// SVN回退
    /// </summary>
    [MenuItem("SVN/Revert", false, 3)]
    public static void SvnRevert()
    {
        ProcessCommand("TortoiseProc.exe", "/command:revert /path:\"" + SVN_BASE + "Assets" + "\"");
    }
    
    /// <summary>
    /// SVN显示信息
    /// </summary>
    [MenuItem("Assets/SVN/ShowLog", false, 4)]
    public static void SvnLog()
    {
        var selectPath = GetSelectFilePath();
        ProcessCommand("TortoiseProc.exe", "/command:log /path:\"" + selectPath);
    }
}

参考
https://blog.csdn.net/egostudio/article/details/51074814

Unity自动化构建部署方案:提升游戏开发效率 在游戏开发中,构建部署是关键的开发环节,但手动操作往往效率低下且容易出错。通过Unity Editor扩展与Python脚本的结合,可以实现构建产物的自动化管理。该方案利用Unity的`IPostprocessBuildWithReport`接口触发Python脚本,自动完成文件复制、SVN提交等操作,显著提升开发效率。技术实现上,采用`subprocess`调用TortoiseSVN命令行工具,避免额外依赖,同时处理跨平台路径问题。此方案不仅适用于日常开发,还能集成到CI/CD流程中,支持多平台打包和资产 阅读详情

相关推荐

unity编辑器扩展 SVN一键更新工具

最近用到一个SVN功能:在本地一个文件夹路径下上传文件,本地其他多个路径下也可Update到前面上传的文件,由于路径不同手动打开多个文件夹更新比较麻烦,于是用Unity写了个一键更新的窗口工具。 以下是部分核心代码窗口类: string SvnFolderName = "/.svn"; // 用于检测文件夹是否受SVN控制 string lastSourceFolderPa

ForTheKingdom的博客 1119

Unity版本控制之SVN的使用

一、SVN简介与安装 SVN是一种版本控制系统,我们现在使用的TortoiseSVN是一种SVN版本控制的客户端程序。TortoiseSVN客户端安装包可以在公司服务器上找到下载,也可以从官网下载,官方下载地址为:https://tortoisesvn.net/downloads.html,根据自己电脑上的系统类型,选择下载32-bit或者64-bit的安装包即可。双击下载下来的安装程序默认安装即可。 如何检查某台电脑上是否已经安装了SVN客户端了呢? 首先打开电脑的文件资源管理器(可以任意找到一个文件夹双

他在试图用代码书写这个世界,字里行间温柔尽显。勿忘初心,努力做有价值的技术文章。 3607

如何用Python+Librosa实现轴承异响检测?5步搞定工业设备故障预警

本文详细介绍了如何利用Python和Librosa库,通过5个步骤构建工业轴承异响检测与故障预警系统。从音频采集、预处理、频谱特征提取,到构建机器学习模型并进行实时监测,提供了完整的代码级解决方案。该方法能有效识别轴承早期故障特征,实现低成本、高效的设备预测性维护。

rnn9storyteller的博客 626

Unity SVN更新提交小工具

Unity开发时每次都要到文件夹中操作SVN,做了一个小工具能够在Editor中直接操作。

SlowFeather's blog 1987

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

图像调整亮度饱和度 c语言,【C#/WPF】调节图像的HSL(色相、饱和度、明亮度)...

先说概念:HSL是一种描述颜色的方式(其他颜色描述方式还有大家熟悉的RGB值)。HSL三个字母分别表示图像的Hue色相、Saturation饱和度、Lightness明亮度。需求:制作一个面板,包含三个滑动条,拖动滑动条可以修改目标图片的HSL值。即模仿PS中类似的功能,如下图:方案一:遍历所有像素点,修改每个点的HSL值。前台界面:一个Image控件显示目标图片,一个Button按钮点击一下降低...

weixin_39935777的博客 1148

Unity与SVN集成:实现高效版本控制

在游戏开发过程中,版本控制是确保团队协作顺利进行的关键。Subversion(简称SVN)作为一种广泛使用的版本控制系统,在Unity项目中也得到了广泛应用。然而,如何高效地在Unity中与SVN进行交互却是一个挑战。本文将介绍如何在Unity中直接和SVN进行交互,实现一些你想要的操作

我是一个热爱游戏开发的Unity程序员,专注于使用Unity引擎创建创新和高效的游戏项目。在我的博客中,我分享Unity开发中的实用技巧、解决方案和优化方法,涵盖从基础入门到高级技术的各个方面。我喜欢探索新技术,持续学习,并与大家一起成长。希望我的分享能帮 1948

免费 AIS船舶轨迹预测 数据集 分享 (可用于长周期轨迹预测)

论文中使用的数据由提供。有关预处理步骤的详细信息,请参阅。

qq_43747519的博客 1万+

【Unity3D编辑器扩展】Unity3D中实现SVN功能

在日常开发中,常常会用到SVN或者Git作为项目版本协同管理的工具,可是在Unity中没有集成的SVN的相关工具,每当需要更新代码或者上传代码的时候需要在项目的文件中操作。所以写了一个工具来实现在Unity中直接使用SVN的相关功能。

CSDN博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2496

STM32L431电池供电项目实战:用STOP2模式把功耗降到5uA以下(CubeMX配置详解)

本文详细介绍了如何在STM32L431电池供电项目中利用STOP2模式实现5μA以下的超低功耗设计。通过CubeMX配置、硬件优化和软件策略,成功将农业温湿度监测节点的待机功耗控制在4.7μA,确保CR2032电池供电下3年以上的工作寿命。文章包含完整的低功耗实现路径和实测数据,特别适合物联网边缘设备开发者参考。

weixin_30345577的博客 389

STM32声源定位:实现声源定位的嵌入式解决方案

通过以上代码,我们可以获取麦克风音频信号样本,并使用交叉相关法计算声源的位置。然而,我可以帮助您解答有关STM32声源定位的问题,提供相关的代码和指导。获取了麦克风音频信号后,我们可以使用信号处理算法来计算声源的位置。该算法通过计算不同麦克风之间的信号延迟来确定声源的方向。首先,我们需要获取每个麦克风的音频信号。声源定位是一项重要的技术,可以帮助我们确定声音的来源位置。在嵌入式系统中,使用STM32微控制器可以实现精确的声源定位。声源定位的基本原理是通过多个麦克风阵列接收到的声音信号来计算声源的位置。

UplKubernetes的博客 2577

shell 脚本 svn update 不执行_Unity游戏开发—SVN工具集成

0.前言对于小型游戏团队来说,SVN应该是团队协作工具的首选,因为他上手简单,对于不懂程序的其他成员来说,学习难度较低,但是每次提交、更新都需要从Unity切换到文件夹,个人感觉比较繁琐,所以在此分享一个集成到Unity中的SVN菜单工具,这样团队所有人都可以无门槛使用,并且节省很多时间了。1.具体实现using Boo.Lang; using UnityEditor; using UnityEn...

weixin_39886024的博客 246

AUTOSAR OS演示项目搭建与验证

请注意,以上代码只是一个简单的示例,用于说明AUTOSAR OS项目的搭建和验证过程。此外,AUTOSAR OS还提供了其他功能和API,如事件、消息队列和任务间通信等,可以根据实际需求进行使用。AUTOSAR OS是AUTOSAR架构中的一部分,它提供了一种可移植且可扩展的操作系统,用于管理嵌入式应用程序的任务和资源。通过以上步骤,我们成功搭建了一个基于AUTOSAR OS的演示项目,并验证了应用程序任务的执行顺序。3、打开app.c文件,并编写一个简单的应用程序,作为我们的示例任务。

weixin_50547796的博客 190

【Unity】Jenkins自动打包扩展知识——SVN篇

学习目标:在已有SVN前提上,对SVN的项目进行自动打包 参考资料: https://blog.csdn.net/nankeyixiao/article/details/79948608 Jenkins触发器时间格式说明 【Unity】Jenkins自动打包入门小结 SVN入门 关于上面的.\LocalSVNRoot/20200210Main是相对于任务文件目录的相对路...

两水先木示的博客 942

PCL 基于超体素的点云分割【2024最新版】

点云超体素分割原理介绍、代码实现以及如何做到将每一个超体素内的点进行单独保存而不造成点云缺失的方法。博客长期更新,本文最近一次更新时间为:2024年12月29日。

点云侠的博客 36万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【unity拓展】在unity3d中集成SVN命令(非cmd方式而是打开svn界面方式)

先看看最终效果: 当然,也是通过命令行的方式实现的,文章后面会列出常用的svn命令~~~~~ 首先,先在unity封装好调用命令行工具的函数,传命令和参数即可进行调用。 public static void ProcessCommand(string command,string argument){ System.Diagnostics.ProcessStart

鱼蛋的开发小站 4248

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[Unity插件]强大的SVN扩展工具Wise SVN

对于使用SVN来管理项目的小伙伴,能在Unity内部直接预览资源的状态那就太方便不过了。 特别是对于美术小伙伴,比如特效师,做了大量特效预制件,虽然可以选择预制件的依赖,来逐一找到需要提交的文件,但是依旧不方便。 笔者尝试使用批处理命令做过一些扩展,但是不系统,且功能较弱。 Wise SVN简介 为防止作者闭源,笔者fork了一份Wise SVN。 支持Windows上的TortoiseSVN和Mac上的SnailSVN。 要求客户端SVN在安装的时候勾选CLI支持(command line interfa

iningwei的博客 1926

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Unity资源修改后SVN不识别

Unity资源修改后SVN不识别 Unity在编辑模式下,使用代码操作Untiy资源时,修改后的资源保存后,SVN有时候不识别。 当资源已改变并需要保存到磁盘,Unity内部使用dirty标识来查找。 例如,如果修改一个prefab的MonoBehaviour或ScriptableObject变量,必须告诉Unity该值已经改变。每当一个属性发生变化,Unity内置组件在内部调用setDirty。MonoBehaviour或ScriptableObject不自动做这个,因此如果你想值被保存,必须调用SetD

qq_15300345的博客 913

Unity实现SVN的提交、更新、清理工具

Unity编辑器直接执行SVN的提交、更新操作

放小孩的羊的博客 1419

SVN(3)-集成到Unity Editor

仍然是为了节省在不同编辑器之间切换带来的耗时和降低对思维流延续性的负面影响。所以在Unity编辑器内Project资源管理面板的右键菜单中集成了三种操作命令:更新,提交和查看日志。可以针对文件夹,也可以针对单子个文件进行操作。当提交或者更新或者查看具体文件或者文件夹的日志时,都需要先在Project面板中选中具体的对象。

一些开发技术备忘 79

unity嵌入 svn tools 整理

using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace Tools{ public static class SVNTool { /// /// SVN更新指定的路径 /// 路径示例:Assets/

盲人东的博客 1831

Unity项目SVN协作中资源重命名报错的根源分析与完整解决方案

在游戏开发与软件工程实践中,版本控制系统(VCS)是团队协作的基石,用于管理代码与资源的变更历史。其核心原理在于跟踪文件的增删改,并解决多人并行开发时的合并冲突。对于使用Unity引擎的项目,其独特的元数据(Meta文件)系统通过全局唯一标识符(GUID)来管理资源间的引用关系,这带来了巨大的技术价值:确保了资源引用的稳定性,不受文件物理路径变更的影响。然而,当这一机制与SVN这类基于文件路径进行版本跟踪的系统协同工作时,在常见的资源重命名场景下极易产生冲突。具体表现为,在操作系统层面直接重命名资源文件,会

weixin_33698043的博客 367

Unity辅助工具_头部与svn

Unity调用者按钮增加PlaySideButton。unity头部扩展基类ToolbarCallback。svn工具辅助类 SVNHelper。"Assets/SVN/更新""Assets/SVN/提交"

SendSI的专栏 499

Unity Editor 编辑器扩展 十四 将TortoiseSVN的基础操作内嵌Unity

集成svn同步工具,非常好用/* * 将TortoiseSVN的基础操作内嵌Unity * 这里只是举了几个简单的例子 * 具体命令可参见TortoiseSVN的help功能 * */ using UnityEngine; using UnityEditor; using System.Diagnostics; public class UnitySVN {

WarrenMondeville的博客 1544

MAC系统安装SVN教程

MAC系统安装SVN教程。

weixin_43545329的博客 971

基于Tortoise SVN的Unity的编辑器拓展

在Unity Project面板右键菜单的拓展本次主要的内容如下 MenuItem的应用 Selection.assetGUIDs的使用 完整代码 MenuItem的应用using System;namespace UnityEditor { [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] public

gaobiejiyi的博客 3740
上一篇: Unity客户端接入原生Google支付
下一篇: 【Unity】关于Luban的简单使用
FFFFujige
博客等级 码龄10年 46粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值