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);
}
[MenuItem("Assets/SVN Tool/全部恢复", false, 1102)]
private static void SvnToolAllRevert()
{
// 往上两级,包括数据配置文件
string arg = "/command:revert /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材质丢失全解析:从诊断到根治的完整指南
在Unity开发中,资源引用管理是保障项目稳定性的核心基础。其原理在于Unity通过GUID和文件路径的引用系统来关联材质、贴图等资产,一旦引用链断裂,就会导致模型渲染异常,俗称“紫薯精”现象。理解这一机制的技术价值在于,它能从根本上避免资源丢失引发的视觉错误和功能缺失,确保项目资产的可维护性。无论是处理AssetBundle动态加载、版本控制系统同步,还是进行渲染管线迁移,稳固的资源引用都是项目协作和工程实践的基石。本文聚焦于Unity中材质丢失这一高频问题,系统梳理了其七大成因,并提供了从应急修复到规范
Unity版本控制之SVN的使用
一、SVN简介与安装 SVN是一种版本控制系统,我们现在使用的TortoiseSVN是一种SVN版本控制的客户端程序。TortoiseSVN客户端安装包可以在公司服务器上找到下载,也可以从官网下载,官方下载地址为:https://tortoisesvn.net/downloads.html,根据自己电脑上的系统类型,选择下载32-bit或者64-bit的安装包即可。双击下载下来的安装程序默认安装即可。 如何检查某台电脑上是否已经安装了SVN客户端了呢? 首先打开电脑的文件资源管理器(可以任意找到一个文件夹双
Unity项目资产清理指南:使用AssetCleaner优化项目性能与体积
在Unity项目开发中,资源管理是影响项目性能和团队协作效率的关键环节。随着项目迭代,未使用的资产会不断累积,导致项目体积臃肿、编辑器响应变慢、构建时间延长。其核心原理是通过分析Unity引擎内部的引用关系图,精准识别未被任何场景或脚本引用的“孤儿”文件。这项技术的价值在于能够安全移除冗余资产,显著优化项目结构,提升开发体验。在实际应用场景中,它特别适用于处理因导入大量测试资源、插件或版本迭代残留的无用资产。通过合理配置扫描范围和过滤规则,开发者可以高效管理项目资产,其中UnityAssetCleaner作
SVN协同开发出现的问题
因为公司需求 需要把老版本的项目重新上传到SVN,中间遇到一些问题,正确操作总结如下。 1.需要这三个的选项钩去掉。 2.同事修改.idea文件夹下面的vcs的文件。 mapping directory="" vcs="svn" /> 改为 mapping directory="" vcs="" />3.用模糊搜索在 路径下面搜索.svn的目录 然后全部删除。(关键是解决svn: E15
Unity SVN 管理(一)
Unity项目SVN管理:因为项目一直都是乱七八糟的,之前在做网站开发的时候,有过一部分SVN的管理经验,之前架设过一个SVN服务器,但是因为项目只有两个人开发,就使用了一段时间之后就不再使用了。现在逐渐的项目变得比较多,而且,安卓和IOS项目的有所不同,我重新开启了SVN服务器。将这段时间所建的项目,模型,音效等等资源放入服务器中以便于统一管理。今天先讲述一下SVN服务器的搭建。SVN服务器的搭建
SvnToolsLite unity多人协同开发插件
SvnToolsLite unity多人协同开发插件,pc上需要下载svn,并把插件放入Assets目录下
Unity SVN更新提交小工具
Unity开发时每次都要到文件夹中操作SVN,做了一个小工具能够在Editor中直接操作。
沐数科技数据开发岗笔试题2025
与数据库中的主键(Primary Key)有所不同,业务主键(Business Key)是业务层面的唯一标识,通常由业务规则决定,例如,订单号、订单明细号,身份证号等。用户授信表(table_credit):包含用户ID(uid)、授信申请时间(credit_submit_time_local)、授信状态(credit_status)。:在正态分布中,大约68%的数据值落在距离均值一个标准差的范围内,约95%的数据值落在两个标准差的范围内,而约99.7%的数据值落在三个标准差的范围内。
unity项目小记_Unity3D多人协作开发环境搭建
unity项目协作开发的话一般用Svn和Git,在这里只介绍一下Svn如何在unity中实现 首先下载Svn Tools Lite,本来是可以在官网上下载的但是现在找不到了,幸好之前下载了 https://download.csdn.net/download/qq_23370223/9979912 如果下载并安装好了并且电脑上也有svn,运行起来unity工程目录看起来就是这样的,绿色的是跟...
从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南
本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。
DolphinScheduler租户配置踩坑实录:手把手教你修复‘tenant not exists‘报错
本文深度解析DolphinScheduler的租户模型,并提供一套从界面到数据库的系统性排查流程,手把手教你修复常见的'tenant not exists'报错。文章揭示了该错误的本质是用户与租户数据关联不一致,并给出了通过UI或SQL更新的具体修复方案,同时分享了根因分析与预防措施,帮助用户从根本上理解和避免此类问题。
Unity与SVN集成:实现高效版本控制
在游戏开发过程中,版本控制是确保团队协作顺利进行的关键。Subversion(简称SVN)作为一种广泛使用的版本控制系统,在Unity项目中也得到了广泛应用。然而,如何高效地在Unity中与SVN进行交互却是一个挑战。本文将介绍如何在Unity中直接和SVN进行交互,实现一些你想要的操作
手把手教你搞定6脚三位一体数码管的驱动(附C语言源码与Visual Studio调试技巧)
本文详细解析了6脚三位一体数码管的驱动原理与实战技巧,包括引脚复用、动态扫描时序、Visual Studio模拟调试及单片机实现。通过C语言源码示例和调试技巧,帮助开发者快速掌握非标准数码管的驱动方法,提升硬件开发效率。
【Unity3D编辑器扩展】Unity3D中实现SVN功能
在日常开发中,常常会用到SVN或者Git作为项目版本协同管理的工具,可是在Unity中没有集成的SVN的相关工具,每当需要更新代码或者上传代码的时候需要在项目的文件中操作。所以写了一个工具来实现在Unity中直接使用SVN的相关功能。
[工作流节点10] 获取多条数据并循环执行 —— 明道云批处理自动化实战
本文系统介绍了明道云工作流中"获取多条数据+循环执行"的批处理功能。该功能通过筛选数据集合并逐条处理,适用于批量通知、数据更新等场景。文章详细解析了功能配置方法,包括数据筛选、循环设置和异常处理,并提供了合同到期提醒等典型应用案例。同时强调了数据量控制、分批处理、错误处理等优化策略,帮助用户实现高效批量自动化。这一功能组合能将业务从单条处理升级为批量驱动,显著提升工作效率。
软件设计师高频考点—套路题
学习交流的总结
SVN 管理unity项目
SVN安装 SVN服务器端下载地址:https://www.visualsvn.comJserver/download/ SVN客户端下载地址:https://tortoisesvnnet/downloads.html 安装过程非常简单,在安装过程中可以自定义软件安装位置和库文件以及备份文件的位置,直接点击下一步即可完成安装。 SVN服务器端创建项目管理库 1、打开svn服务器端安装路径下(我的安...
嵌入式编程模型 | 原型模式
本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。
Unity扩展SVN命令
Unity扩展SVN命令
10步掌握!跨国企业在MySQL中实现数据主权的秘诀 vs. 传统方法,你选对了吗?
首先,我们要明确“数据主权”这一概念。简单来说,它指的是国家对其境内产生的所有类型的数据拥有绝对控制权。这意味着即使数据被存储在国外服务器上,只要该数据来源于某国,那么该国政府就有权对其进行监管。对于跨国公司来说,这就要求它们必须严格遵循不同国家关于数据保护的规定,如欧盟的GDPR、美国的《云法案》以及中国的《网络安全法》等。
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
Unity提示找不到SVN.exe
打开Unity一直报错,Svn Tools Lite: Could not find path to svn.exe. 需要我在Inspector界面里手动指定我的TortioseSVN的svn.exe的路径。 SVN的exe默认路径如下: 打开其中的bin文件,发现里面并没有svn.exe,原因是在自己安装的时候没安装对应的svn.exe 打开菜单栏的卸载软件界面,找到SVN对应的软件,点击修改: 然后点击next,点击modify对应的电脑图标: 可以看到自己的CommandLine Tool前面
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
手把手教学:如何使用SVN管理Unity项目
SVN 和 Git 都是版本管理的工具,最大的区别是前者仓库位于创建者电脑本地,需要协作者在同一局域网下进行操作(校园网下不一定可行,可以先通过 ping 对方的 IP 地址进行测试,比如我们小组的测试结果是校内除宿舍以外都无法进行传输,如何 ping 文章末尾有说明);后者仓库位于云端,可跨网络操作,但仓库大小受托管平台限制。
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
【亲测免费】 UnityWiseSVN 使用教程
UnityWiseSVN 使用教程 项目介绍 UnityWiseSVN 是一个为 Unity 游戏开发环境设计的 Subversion (SVN) 集成工具。它旨在简化 Unity 项目中的版本控制流程,使得开发者可以更高效地管理和协作开发项目。UnityWiseSVN 提供了直观的用户界面和一系列便捷的功能,帮助开发者轻松地进行代码提交、更新、比较和解决冲突等操作。 项目快速启动 安装与配置 ...
如何在Unity中使用TortoiseSVN
UnityEditor.EditorUtility.DisplayDialog("SVN:警告", "请选择一个文件或目录", "知道了");UnityEditor.EditorUtility.DisplayDialog("SVN:警告", "请选择一个文件或目录", "知道了");[MenuItem("Assets/SVN 更新 &#u")][MenuItem("Assets/SVN 提交 &#s")]
Unity3D游戏开发之使用SVN对Unity进行版本控制
步骤:Edit > Project Settings > Editor 选择之后到Inspector窗口,如图所示 Version Control一栏默认模式是disabled,改成 "Meta Files",这样之后Unity会对所有资源文件创建相应的.meta文件,这会让你的工程更好的配合SVN(吐槽:其实我完全不知道是干嘛用的,那些.
【Unity/SVN】使用SVN管理Unity项目
本文转载自:http://blog.csdn.net/neil3d/article/details/38437237 Unity提供了自己的XXXServer,不过大家评论好像不是很好用,主要是不支持branch等我们做项目的重要特性;他还推荐Perforce这样高大上的版本管理系统,不过都很贵。所以我还是打算使用比较习惯的SVN来管理。 需要版本管理的目录 新建一个Unity Project...
375




被折叠的 条评论
为什么被折叠?



