游戏开发小技巧记录(一)——目录连接

阅读本文你可能需要的前置知识:

  1. windows命令行使用
  2. shell脚本使用
  3. 版本控制管理

在这几年的开发过程里遇到了一些问题,在解决问题的过程中学习到了一些非常有用的小技巧,于是准备逐个记录一下。
这些小技巧在成熟的公司或项目里可能会很常见,但对于个人开发者或者初创团队而言往往是一些盲区,有的可能是完全没有接触过,有的可能是没想过可以这么使用。
记录下来,希望可以对其他人有所帮助。

这一篇文章要讲的是目录连接

定义

目录链接这个词是微软在msdn上的翻译,英文叫Directory Junction,在linux上可能叫“符号链接”,它是一个文件夹中的一个链接,这个链接指向另一个文件夹
换句话说,可以让一个文件夹在多处被使用,可以解决同一台电脑下文件夹的同步问题。

在这里插入图片描述

上面这个描述看起来非常像是windows系统的快捷方式,但它与快捷方式不同的是,快捷方式仅仅只是一个可以跳转到指定目标的文件,而目录链接则跟一个普通的目录没有区别,它可以被其他的应用作为一个普通的目录进行检测。

应用

那么这个功能有什么意义呢?
我们思考下面这样的场景:

我们团队里有两个人,一个美术一个程序,合作使用unity开发一个游戏,游戏使用NGUI开发,NGUI在使用图片的时候通常需要使用NGUI提供的打包工具进行图集打包,这个工具的使用范围是Unity内部。
在这时候就出现了几个问题:

  1. 我们导入的图片资源在实际项目里用不上,但每一次又需要把图片导入项目中
  2. 如果我们使用了版本管理,不管是SVN也好还是GIT或者其他的也好,每一次导入图片也同时需要把图片同步上传到版本管理里,如果美术也使用了其他的版本管理,那就意味着我们会额外多出来一份不必要的版本
  3. 每一次美术做完图片,都需要手动再往项目里导入一次,多出来一个手动步骤就很可能多出来一分出错的概率

但是这个几个问题如果使用目录链接就可以很简单地解决:

我们建立一个专门给美术出图的文件夹,所有出的图都分类放到这个文件夹的子目录下;然后把在unity项目中建议这个文件夹的目录连接,那么我们的unity就会自动使用这个文件夹。

  1. 我们不需要每一次都手动把图片导入项目,美术只需要把图片放到这个文件夹里,我们就能收到指定文件,如果我们做好了分类,那么编写一个自动化脚本调用NGUI的图集工具自动更新所有的图集即可,这就解决了前面1和3两个问题
  2. 我们也不需要把这部分图片文件加入版本管理,美术可以自由使用他们自己的版本,另一份版本也好、专门的图库也好,只要能进行版本管理即可。

当然,实际开发中遇到的问题可能不会这么简单,这个小技巧的使用范围也不仅限于所举的例子:

  1. AB包的原始资源非常巨大,改动多,加入版本管理会导致不必要的膨胀,那么可以把AB包的原始资源和代码项目分开,分别进行版本管理,那么资源和代码就形成了两个专用的版本;
  2. 公司中有一个中台,专门负责SDK的接入,那么所有的SDK都使用同一个导入的文件夹,这样SDK的版本和项目的版本就可以分离
  3. 等等等等

使用方法

前面说了上千个字,其实这个功能使用起来非常简单,在windows下,只需要在cmd中使用这样的代码就可以创建链接了:

mklink /j 目标目录 源目录

在具体项目中,我们还可以把创建链接的命令制作成脚本,在windows下制作成bat文件,直接运行即可。

举例

  1. 首先我们创建几个文件夹用于测试,现在几个文件夹都是空的:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 使用我们的目录连接:

mklink /j "Target/sourceLink" "Source"

在这里插入图片描述

  1. 这时候如果进入“Target”,会发现里面多了个“sourceLink”图标:
    在这里插入图片描述
    如果我们在cmd中使用dir查看目录,会发现里面同样出现了"sourceLink",并且被标记为<JUNCTION>,表示这是一个目录连接
    在这里插入图片描述

  2. 进入sourceLink中创建一个文件,然后到Source中查看,会发现这是同一个文件夹,在任何一个里改动都会造成另一个改动,并且通过两个入口进入目录时显示的路径是不同的:
    在这里插入图片描述

在这里插入图片描述
注意上面两张截图,从两个入口进入时,显示的路径是不同的。

  1. 删除链接时只需要像删除普通的文件夹那样删除就好了,删除链接本身是不会对源文件造成影响的:
    在这里插入图片描述
    在这里插入图片描述

  2. 如果对链接进行剪切,也会造成源文件夹的所有内容都被剪切到其他地方。

其他平台

除了windows,其他平台也是可以使用目录连接的。

比如MacOS和Linux下可以使用ln命令进行制作:

ln -s souce linkName

Windows下使用PowerShell一样可以实现:

New-Item -Type Junction -Path LinkName -Value source

扩展

  1. 其实除了目录连接外,还有另一种硬连接,通常都针对具体的文件,可以对同一个文件建立不同的打开入口,有兴趣的同学也可以自己研究一下。
  2. 在windows下,使用mklink还有一个/d的选项,可以生成“目录符号链接”,但是在创建时需要对目标目录使用绝对路径,如下所示:
    在这里插入图片描述
    这种方式制作的文件其实就是windows下的快捷方式:
    在这里插入图片描述

在这里插入图片描述

参考链接

CMD命令:mklink参考
PowerShell命令:New-Item参考
shell命令: ln参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值