实现范围体爆炸

实现范围体爆炸 对于实现游戏中的艺术效果,有时候需要在画质和运行效率上进行巧妙的权衡。在实现爆炸效果上尤其如此;因为它是很多游戏的核心效果,但是在它之后的一些物理计算通常都会超过现代计算机的算力。爆炸本质上就是一团温度非常高的火红气体;所以正确模拟它的唯一方式就是在游戏中用流体模拟来模拟它。正如你所想的一样,这在运行时是不可行的,在很多的游戏中都是通过粒子来模拟。当一个物体爆炸的时候,通常会同时产生很多的火花,烟雾和一些散落的碎片,这样可以获得一个比较像的爆炸。不幸的是,这种模拟方法很容易被看破而且可能不是很真实。这里我们会了解一种折中的技术来实现爆炸效果,并且画质更好:范围体爆炸(volumetric explosions) 。这个知识点背后的思考是我们不再把爆炸当作是一系列粒子的模拟;它们现在进阶到3D物体了,而不仅仅是扁平的2D贴图。 始前准备 我们通过下面的几个步骤来讲解这个知识点: 为这个效果创建一个新的着色器 创建一个新的材质,并且关联该着色器 把这个材质关联到一个球体模型上。你可以在编辑器上直接创建一个球体模型,通过菜单 GameObject | 3D Object | Sphere 。 注意 使用标准的Unity球体就可以很好的演示这个知识点,但是如果你想要更大范围的爆炸,那么你可能需要面数更多的球体。事实上,顶点函数只能修改网格的顶点。所有其他的点都可以通过修改相邻顶点的位置的方式来修改它们。顶点数越少,那么爆炸效果的精细度也就越低。 这个知识点中,你需要一个 渐变纹理(ramp texture) ,这个纹理需要有你爆炸的所有颜色梯度。你可以用GIMP或者PhotoShop工具创建一个跟下面类似的纹理: 当你有了这个图片后,把它导入到你的Unity中。然后在 检查器面板(Inspector) 中,确保 Filter Mode 设置为 Bilinear ,然后 Wrap Mode 设置为 Clamp 。这两个设置是为了确保对渐变纹理平滑采样。 最后,你还需要一张 噪音纹理(noisy texture) 。你可以在网上搜索免费的噪音纹理。一般我们都使用 Perlin noise 。【这里我自己找到一个网站http://kitfox.com/projects/perlinNoiseMaker/】 操作步骤 这个效果我们分两步来实现:通过顶点函数改变几何形状,通过表面函数给与正确的颜色。这两个步骤如下: 添加下面的属性到着色器中: _RampTex("Color Ramp", 2D) = "white" {} _RampOffset("Ramp offset", Range(-0.5,0.5))= 0 _NoiseTex("Noise tex", 2D) = "gray" {} _Period("Period", Range(0,1)) = 0.5 _Amount("_Amount", Range(0, 1.0)) = 0.1 _ClipRange("ClipRange", Range(0,1)) = 1 添加相应变量,让着色器的Cg代码可以访问到它们: sampler2D _RampTex; half _RampOffset; sampler2D _NoiseTex; float _Period; half _Amount; half _ClipRange; 修改 输入结构体(Input structure) ,这样可以让它接收渐变纹理的UV数据: struct Input { float2 uv_NoiseTex; }; 添加下面的顶点函数: void vert(inout appdata_full v) { float3 disp = tex2Dlod(_NoiseTex, float4(v.texcoord.xy,0,0)); float time = sin(_Time[3] *_Period + disp.r*10); v.vertex.xyz += v.normal * disp.r * _Amount * time; } 添加下面的的表面函数: void surf(Input IN, inout SurfaceOutput o) { float3 noise = tex2D(_NoiseTex, IN.uv_NoiseTex); float n = saturate(noise.r + _RampOffset); clip(_ClipRange - n); half4 c = tex2D(_RampTex, float2(n,0.5)); o.Albedo = c.rgb; o.Emission = c.rgb*c.a; } 我们直接通过 #pragma 来指定我们要使用的顶点函数,通过添加 nolightmap 参数来阻止Unity添加真实光照到我们的爆炸效果中: #pragma surface surf Lambert vertex:vert nolightmap 最后一步,给我们球体模型选择我们刚刚创建的材质,然后在 检查器面板(Inspector) 中,为我们的材质添加噪音纹理和渐变纹理。这是一个动画材质,也就是说会随着时间变化。你可以观察材质的变化,只要在编辑器的 场景窗口(Scene Window) 中点击 Animated Materials : 原理介绍 在学习这个知识点的时候,如果你了解 表面着色器(Surface Shaders) 和 顶点修饰(vertex modifiers) 的工作原理。这个效果背后的主要思路是以一种混乱的方式修改这个圆球几何图形的表面,然后使它看起来像真正的爆炸。下图所示是在Unity编辑器内这种爆炸看起来的样子。可以看到这个网格已经发生了明显的畸变: ...

October 23, 2022 · 2 min · 287 words · Link

windows powershell7.X安装,跟oh-my-posh美化

在windows安装powershell7.x,以及oh-my-posh的美化 1.安装Windows Terminal 有下面几种安装方式 直接在windows的商店重搜索windows terminal然后安装即可 通过winget安装 winget install --id=Microsoft.WindowsTerminal -e 通过Chocolatey安装 choco install microsoft-windows-terminal 2.安装powershell7 可以通过下面几种方式安装 在官网下载msi安装包,直接安装 https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.2 如下图 使用 winget 安装 winget install --id Microsoft.Powershell --source winget 设置默认启动的shell为powershell7 打开windows terminal 在窗口标题栏右键,然后点击设置 然后选择启动,然后选择默认用powershell7启动,如下图 然后关闭windows terminal,重新打开,就可以看到默认是以powershell启动 3.安装oh-my-posh[顺带安装posh-git] 安装oh-my-posh和posh-git 旧教程都是通过在powershell中安装模块的方式安装,但是作者现在已经不推荐那样安装了,具体的原因在这里:原因 新的oh-my-posh的安装方式,也在原因有说明,过程如下: oh-my-posh 首先移除掉之前的一些模块缓存文件 Remove-Item $env:POSH_PATH -Force -Recurse :exclamation: 注意 如果你在这个位置有放自己的一些内容,这些内容会一起被删除,所以在执行上面的命令之前,请一定要记得先保存这些自己的文件 安装oh-my-posh winget install JanDeDobbeleer.OhMyPosh -s winget 这个命令会做下面两件事: 安装 oh-my-posh.exe可执行文件到你的电脑 安装Oh My Posh的最新的主题【如果你有设置自定义的主题,就会使用你自己的】 3. 卸载powershell中的oh-my-posh模块 Uninstall-Module oh-my-posh -AllVersions 从$PROFILE中删掉下面的模块导入命令 Import-Module oh-my-posh posh-git ...

October 15, 2022 · 1 min · 191 words · Link

Mac中使用npm的http-server

Mac在本地开发中使用http-server,并且使用https 1.在本地新建一个文件夹,并进入该文件夹 新建一个文件夹www mkdir www 进入文件夹 cd www 2.安装 mkcert brew install mkcert brew install nss # if you use Firefox 3.将 mkcert 添加到本地根 CA mkcert -instal 4.为您的站点(localhost)生成一个由 mkcert 签名的证书 mkcert localhost 5.启动服务[把下面的命令直接放到一个.sh文件中去,直接运行.sh文件] http-server -p 8080 -S -C ./localhost.pem -K ./localhost-key.pem

October 12, 2022 · 1 min · 41 words · Link

在Unity编辑器不同位置添加菜单

在Unity编辑器不同位置添加菜单 有时候由于自定义工作流的需要,我们需要在编辑器中添加我们自己的菜单,用来执行不同的操作,这里介绍在编辑器的不同位置该如何添加菜单,比如在主菜单添加,Hierarchy, Project,Inspector等位置。主菜单通过下拉列表弹出,Hierarchy,Project和Inspector分别是鼠标右键弹出。 在主菜单中弹出 using UnityEngine; using UnityEditor; using System.Collections; public class ExampleClass : MonoBehaviour { // Add Example1 has priority of 100 [MenuItem("Example/Example1", priority = 1)] public static void Example1() { print("Example/Example1"); } // Example2 has a priority of 111 which is 11 more than Example1. // This will cause a divider to be created. [MenuItem("Example/Example2", priority = 11)] public static void Example2() { print("Example/Example2"); } } 效果如下图: 注意当两个菜单的 priority 差值大于10【小于等于10不会有】的时候,菜单之间会自动生成一条横线。并且 priority 越大,菜单就会在越下面 在Hierarchy中弹出 using UnityEngine; using UnityEditor; using System.Collections; public class ExampleClass : MonoBehaviour { // Add Example1 has priority of 100 [MenuItem("GameObject/Example1", priority = 1)] public static void Example1() { print("Example/Example1"); } // Example2 has a priority of 111 which is 11 more than Example1. // This will cause a divider to be created. [MenuItem("Example/Example2", priority = 12)] public static void Example2() { print("Example/Example2"); } } 效果如下图: 注意它会出现在两个位置 在主菜单的GameObject子菜单下: ...

September 22, 2022 · 2 min · 280 words · Link

实现下雪效果着色器

实现下雪效果着色器 在游戏中模拟下雪效果一直都是一件有挑战的事情。大部分的游戏都会简单的直接在模型的纹理上包含雪,让这些模型看起来雪白。然而要是其中某个模型开始旋转了呢?雪并不是敷衍了事的表面工作;它应该被当做是一些材料的合理的堆积【意思是物体表面 的雪是雪花一点一点堆积起来的,而不是简简单单的给它一张白色的贴图】。在这个知识点中将会向你展示如何用一个着色器让你的模型看起来有种下雪的样子。 要完成这个效果有两个步骤。首先,对于朝向天空的三角面我们给它白色。其次,通过挤压顶点来模拟雪的堆积效果。你可以从下图看到最终的效果: 注意 本知识点并无意去创建那种超真实的下雪效果。它只是抛砖引玉,但在你的游戏当中,最终的效果定位,还是取决于你们的艺术家们,通过他们设置正确的纹理和参数来达到你的要求。 始前准备 这个效果完全基于着色器来实现,所以请按照下面的步骤操作: 1.为雪的效果创建一个新的着色器。 2.为这个着色器创建一个新的材质。 3.把这个材质添加到你想表现雪的效果的模型上去。 操作步骤 为了创建下雪的效果,请打开你的着色器,然后做以下的修改: 1.把下面的属性块替换掉你原来的着色器属性块: _MainColor("Main Color", Color) = (1.0,1.0,1.0,1.0) _MainTex("Base (RGB)", 2D) = "white" {} _Bump("Bump", 2D) = "bump" {} _Snow("Level of snow", Range(1, -1)) = 1 _SnowColor("Color of snow", Color) = (1.0,1.0,1.0,1.0) _SnowDirection("Direction of snow", Vector) = (0,1,0) _SnowDepth("Depth of snow", Range(0,1)) = 0 2.添加与属性块对应的变量: sampler2D _MainTex; sampler2D _Bump; float _Snow; float4 _SnowColor; float4 _MainColor; float4 _SnowDirection; float _SnowDepth; 3.用下面的代码替换掉原来的 输入结构体(Input structure) struct Input { float2 uv_MainTex; float2 uv_Bump; float3 worldNormal; INTERNAL_DATA }; 4.用下面的表面函数替换掉原有的表面函数。它会让模型着雪的部分变成白色: void surf(Input IN, inout SurfaceOutputStandard o) { half4 c = tex2D(_MainTex, IN.uv_MainTex); o.Normal = UnpackNormal(tex2D(_Bump, IN.uv_Bump)); if (dot(WorldNormalVector(IN, o.Normal), _SnowDirection.xyz) >= _Snow) o.Albedo = _SnowColor.rgb; else o.Albedo = c.rgb * _MainColor; o.Alpha = 1; } 5.配置 #pragma 预编译指令,让我们可以使用顶点修饰: #pragma surface surf Standard vertex:vert 6.添加下面的顶点修饰,这样就可以对被雪覆盖部分的顶点进行挤压: void vert(inout appdata_full v) { float4 sn = mul(UNITY_MATRIX_IT_MV, _SnowDirection); if (dot(v.normal, sn.xyz) >= _Snow) v.vertex.xyz += (sn.xyz + v.normal) * _SnowDepth * _Snow; } 现在你可以去你的模型材质 检查器面板(Inspector tab) 查看,然后通过调节上面的参数,你可以调节雪的覆盖面积和厚度。 ...

July 17, 2022 · 2 min · 233 words · Link

模型挤压

模型挤压 重复是游戏当中最要命的一个问题之一。在游戏中创建新内容是一项费时的任务,当你要创建成千上万的敌人时,那么有很大的可能这些敌人有可能会看起来一样。这个时候利用着色器修改模型的基本几何图形,从而让模型产生不同的变化,可以说是一种 相对来说性能较好的方法。这个知识点中我们会给你演示一种叫做 法线挤压(normal extrusion) 的技术,可以用来创建胖的或者瘦的模型,就比如下图所示的来自Unity的demo中的士兵: 始前准备 在这个知识点中,我们需要获取要挤压的模型的着色器。获得该着色器后,复制它,因为这样能安全的编辑拷贝的着色器。我们可以按照下面的步骤进行: 1.找到模型使用的着色器[原着色器就是一个标准的着色器,没有找到就自己新建一个也行],通过快捷键 Ctrl + D 复制它。 2.复制模型原有的材质,并且将之前复制的着色器添加给它。 3.把这个新的材质添加到模型上,并且开始编辑它。 为了达到效果,你的模型还要有 法线(normals) 。 操作步骤 为了创建这个效果,我们先来编辑刚刚复制的着色器: 1.首先给我们的着色器添加一个属性,用于调整压缩效果。我们这里的调节范围是从 -0.00005 到 0.00005 【书上是-1到1,但实际上书上的范围太大了,各位可以自己试试】,当然你可以根据自己的需要调节这个范围【 _MainTex 是需要的,因为人物是需要贴图的。】: _MainTex("Texture", 2D) = "white" {} _Amount ("Extrusion Amount", Range(-0.00005, 0.00005)) = 0 2.我们的属性和变量是成对出现的,在着色器中定义下面的变量: float _Amount; 3.修改 pragma 预编译指令让Unity知道我们要使用 顶点修饰(vertex modifier) 。然后在它后面添加 vertex:function_name ,function_name就是你自定义的方法名,当我我们这里叫 vert: #pragma surface surf Lambert vertex:vert 4.添加下面的顶点修改代码: void vert (inout appdata_full v) { v.vertex.xyz += v.normal * _Amount; } 5.这样着色器就写好了;这样你就可以在 检查器面板(Inspactor) 中通过修改材质上的 Amount 参数来控制士兵的胖瘦了。【书本写的不清楚,其实还有贴图的代码,作者没有交代,所以完整的代码如下:】 Shader "Custom/Normal Extrusion" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Amount ("Extrusion Amount", Range(-0.00005, 0.00005)) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Lambert vertex:vert // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; float _Amount; // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. // #pragma instancing_options assumeuniformscaling UNITY_INSTANCING_CBUFFER_START(Props) // put more per-instance properties here UNITY_INSTANCING_CBUFFER_END void vert (inout appdata_full v) { v.vertex.xyz += v.normal * _Amount; } void surf (Input IN, inout SurfaceOutput o) { // Albedo comes from a texture tinted by color o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb; } ENDCG } FallBack "Diffuse" } 原理介绍 表面着色器(Surface shader) 分两步来工作。在前面的章节中,我们只是探索了它最后一个步骤:表面函数(surface function。这里我们接触了另一种函数:顶点修饰(vertex modifier) 。它接收一个顶点的数据结构 (通常这个数据结构叫做 appdata_full )并且对它进行转变。它让我们对于模型的几何图形做各种视觉效果给与很大的自由度。我们通过在表面着色器的预编译指令 #pragma 那里添加 vertex:vert 来告知GPU 我们添加了 自己的顶点函数。你可以查看 第六章,片元着色器和抓取通道 来学习怎么在顶点着色器和片元着色器中定义顶点修饰。 ...

July 11, 2022 · 2 min · 358 words · Link

对表面着色器中的顶点使用动画

对表面着色器中的顶点使用动画 我们现在知道了如何访问每个顶点数据的一些基础知识,这次让我们更进一步的了解一些其他类型的数据和顶点的位置。 使用顶点函数,我们可以访问网格中每个顶点位置。具体来说就是可以在着色器处理渲染的过程中,这些函数可以让我们单独对每一个顶点进行修改。 这个知识点当中,我们会创建一个着色器,并且用三角函数的正弦函数( sine wave )来修改网格当中的每一个顶点。该技术可以用来创建旗子飘动或者海浪等物体动画。 始前准备 我们把资源都放一块儿,这样方便我们为顶点着色器( Vertex Shader )编写代码: 1.创建一个新的场景,并且创建一个平面网格( plane mesh ),把它放在场景正中央,位置归零。 2.然后创建一个新的材质和着色器。 3.最后,把着色器挂到材质上,在把材质挂到平面网格上。 最终,你的场景看起来应该跟下图一样: 操作步骤 场景创建好后,鼠标双击打开刚刚我们创建的着色器: 1.让我们给着色器的属性块下面的预设值: Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _tintAmount ("Tint Amount", Range(0,1)) = 0.5 _ColorA ("Color A", Color) = (1,1,1,1) _ColorB ("Color B", Color) = (1,1,1,1) _Speed ("Wave Speed", Range(0.1, 80)) = 5 _Frequency ("Wave Frequency", Range(0, 5)) = 2 _Amplitude ("Wave Amplitude", Range(-1, 1)) = 1 } 2.接下来我们通过下面的声明告诉Unity,我们需要使用顶点函数了,添加声明的位置在: #pragma statement: CGPROGRAM #pragma surface surf Lambert vertex:vert 3.为了访问属性块中的值,我们还要在 CGPROGRAM 块中声明与之对应的变量: sampler2D _MainTex; float4 _ColorA; float4 _ColorB; float _tintAmount; float _Speed; float _Frequency; float _Amplitude; float _OffsetVal; 4.我们也将使用顶点位置的变化作为 vert 颜色。因为这样我们可以顺便修改物体的颜色了: struct Input { float2 uv_MainTex; float3 vertColor; } 5.此时,我们要修改顶点的表现了,我们要使用到下面的正选函数和顶点函数,在我们的 Input Struct 后面添加如下代码: void vert(inout appdata_full v, out Input o) { float time = _Time * _Speed; float waveValueA = sin(time + v.vertex.x * _Frequency) * _Amplitude; v.vertex.xyz = float3(v.vertex.x, v.vertex.y + waveValueA, v.vertex.z); v.normal = normalize(float3(v.normal.x + waveValueA, v.normal.y,v.normal.z)); o.vertColor = float3(waveValueA,waveValueA,waveValueA); } 6.最后,我们要使用一个 lerp() 函数对两个颜色进行一个插值,这样我们就可以对新网格的波峰和波谷应用不同的颜色,为了获得这种表现,添加下面的代码让顶点函数起作用: void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); float3 tintColor = lerp(_ColorA, _ColorB, IN.vertColor).rgb; o.Albedo = c.rgb * (tintColor * _tintAmount); o.Alpha = c.a; } 当你完成了着色器的编写后,回到Unity并且等待着色器编译完成。当编译完成后,你就会看到如下图所示的情形: ...

July 9, 2022 · 1 min · 206 words · Link

顶点函数

第五章 顶点函数 着色器(shader) 这个术语最开始源于Cg领域,它主要用于模拟现实中的光照(阴影)在3D模型中的表现。而如今,着色器的用途远不止上面这些。它不仅可以定义物体的外观表现方式,还可以完全重新定义它们的形状。 如果你想学习如何通过着色器来修改3D模型的几何形状,这一章的内容非常适合你。 在这一章,你将会学习下面这些知识点: 在表面着色器(Surface Shader)中访问顶点颜色 对表面着色器中的顶点使用动画 模型挤压 实现下雪效果着色器 实现范围体爆炸 介绍 在第一章,创建你的第一个着色器 中,我们 解释了3D模型不仅仅是一些三角形的集合。每一个顶点都包含了要正确渲染这个模型所必须的一些数据。这一章,为了在着色中能使用这些数据,我们将探索如何访问这些信息。而且我们还将探索如何使用Cg代码对物体进行形变的具体细节。 在表面着色器中访问顶点颜色 在这个章节,让我们来看看如何在着色器中用顶点函数来访问这些模型的顶点信息。这些知识旨在让我利用模型顶点包含的信息元素来创造一些真正实用的和引人入胜的视觉效果。 顶点函数中的顶点能返回一些我们想要的信息。你可以用 float3 这类值来获得顶点的法线方向信息,顶点的位置信息。你甚至可以将颜色值保存在每个顶点中,并且用 float4 这类值来返回该颜色。这些将是这个知识点我们将要讲的东西。 我们需要理解在 表面着色器(Surface Shader) 中,如何将颜色信息保存到顶点中以及如何获取这些颜色信息。 始前准备 为了编写这个着色器,我们需要准备一些资源。下面这些步骤是我们创建这个顶点着色器(Vertex Shader)的准备和设置: 1.为了能够看见顶点颜色,我们需要一个顶点设置了颜色的模型。当然你可以用Unity来添加这些颜色,这样的话你不得不编写一个工具来单独的应用这些颜色,或者编写一些脚本来获取刚刚添加的颜色。但是在这里,我们简单的利用 Maya 来把颜色应用到我们的模型顶点上。但是现在这个模型你可以在这本书的支持页面获得https://www.packtpub.com/books/content/support【实际上这个地址根本没有这个模型,这本书的代码我放在这里了 本书的代码包 】 2.创建一个新的场景,并且把导入的模型放到场景中。 3.创建一个新的着色器和一个新的材质。完成创建后,把着色器添加到材质上,然后把材质添加到模型上。 你的场景看起来应该跟下面的屏幕截图一样: 操作步骤 随着我们的场景,着色器,材质这些创建好后,我们就可以开始为我们的着色器编写代码了。我们在编辑器的 Project 面板中双击我们创建的Shader打开它。然后跟着下面的步骤走: 1.因为我们创建的着色器很简单,所以在着色器的 属性(Properties) 块中没有必要包含任何属性。但我们仍然需要有一个全局的tint颜色,仅仅是为了跟书中的其他着色器形式上保持一致而已。在着色器的属性块中写入以下代码: Properties { _MainTint("Global Color Tint", Color) = (1,1,1,1) } 2.下面这一步中, 是告诉Unity我们将在着色器中包含一个顶点函数: CGPROGRAM #pragma surface surf Lambert vertex:vert 3.跟往常一样,如果我们在属性块中包含了属性,那么我们要确保在 CGPROGRAM 声明中定义与之对应的变量才行。我们在 #pragma 声明的正下方输入下面的代码: float4 _MainTint; 4.接下来我们要关注 输入结构体(Input struct) 。我们还要再定义一个新的变量,主要是给我们的 surf() 方法用,用来接收从 vert() 这个函数中返回的数据: ...

June 26, 2022 · 1 min · 205 words · Link

向GitHub中提交大文件(LFS)

向GitHub中提交大文件 LFS 出于某些原因,我们想向GitHub中提交某些比较大的文件,比如项目中的一些音频视频这样的媒体文件,游戏中的大场景, 亦或者只是单纯的想把自己项目的压缩文件上传到GitHub上保管等等。但是GitHub在仓库上有下面的一些限制: 先了解一些大小限制条件: 仓库总大小: 官方建议小于1G,最大不能超过5G,如果大于1G,会收到官方的警告文件 仓库中单个文件大小: 官方建议小于50M,最大不超过100M,如果大于50M也会收到警告 单个LFS: GitHub最大支持的LFS文件大小是2G,所以如果有单个文件大小大于2G,要用压缩文件分包,每个包大小最好小于或等于1G 官方的说明文档https://docs.github.com/cn/repositories/working-with-files/managing-large-files/about-large-files-on-github 由于上面的这些限制,所以我们最好还是选择LFS来提交这些文件,由于我是用的不是命令行,是SourceTree,所以这里讲的是用SourceTree提交LFS的步骤。 SourceTree中提交LFS的步骤 1.项目初始化 1.首先在GitHub创建一个自己的仓库,并且把它拉取到本地 2.把自己的大文件用 7z 或者 WinRar 之类的软件进行分包,每个大小小于或者等于1G 3.把这些文件复制到本地仓库中,如下图所示: 2.在SourceTree中LFS初始化 在SourceTree中选择 仓库-> Git LFS -> 初始化仓库 接着会弹出窗口,选择 开始使用Git LFS 然后在弹出的窗口中选择添加,在下拉列表中选择合适的扩展名,比如**.7z** ,然后点确定。 如果是分包,可能扩展名下拉列表中不会有对应的选项,这个时候你可以手动写上去,比如我的**.001** 这样的分包后的扩展名, 然后再点确定。最后点击窗口的确定按钮,那么这些扩展名就会加入LFS提交 策略中了。之后会在项目中生成一个 .gitattributes 后缀的文件,这个要跟LFS文件一起提交。 3.在SourceTree中选中那些文件【只支持一个一个的选】,右键,然后选择跟踪Git LFS的文件类型 把所有要执行跟踪的LFS文件都执行一遍上面的操作,然后选择这些LFS文件外加一个**.gitattributes** 文件一起暂存,随后提交。 之所以要这样做,是如果不执行上面的跟踪步骤,在暂存提交的时候会收到警告。 4.用SourceTree推送,第一次可能会有红色警告,没关系,关掉窗口,再点提交按钮,再提交一下就OK了

April 22, 2022 · 1 min · 46 words · Link

项目中Git要忽略的文件

项目中Git要忽略的文件 红框框起来的部分即为要忽略的文件 1 Unity项目中 要忽略的文件如下图: 2 Visual Studio项目中 要忽略的文件如下图:

April 22, 2022 · 1 min · 9 words · Link