
原理:实现两张的融合,即将其中一张的的像素点放到另外一张上。
1、需要两张,一张墙壁的,一张d痕的,要实现用鼠标点击墙壁时,以点击的位置为中心点,将d痕的像素点设置在墙壁上。
2、创建Unity工程,这两张拖到工程后,做以下修改设置
①需要设置这两张的TextureType为Advanced;
②这两张都要勾选上Read/WriteEnable属性,允许进行像素编辑;
③设置d痕的MaxSize为64,Format格式为:RGBA32 bit;
④设置wall的MaxSize为2048,Format格式为RGBA32 bit;
3、创建场景,直接将墙壁托放在Plane上即可
4、创建脚本PlaneScr,在脚本中实现使用鼠标点击墙壁时能够生成相应的d痕,将脚本挂载在Plane上
Mipmap技术有点类似于LOD技术,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源
使用Mipmap后,贴图会根据摄像机距离的远近,选择使用不同精度的贴图。
MipMap可以用于跑酷类游戏,当角色靠近时,贴图清晰显示,否则模糊显示
如果我们使用的贴图不需要这样效果的话,就一定要把Generate Mip Maps选项和Read/Write Enabled选项取消勾选!因为Mipmap会十分占内存!
mipMap会让你的包占更大的容量! 官方参考
1Audio Source(声音组件)
AudioClip:声音片段,可对其直接赋值声音文件
Output:音源输出
Mute:是否静音
Bypass Effects:音源滤波开关,是否打开音频特效
Bypass Listener Effe:监听滤波开关
Bypass Reverb Zone:回音混淆开关,当勾选时,不执行回音混淆
Play On Awake:开机自动播放
Loop:循环播放
Priority:播放优先级
Volume:音量大小,范围0到1。
Pitch:播放速度,范围-3到3。
Stereo Pan:声道占比
Spatial Blend:空间混合
Reverb Zone Mix:回音混合
3D Soungd Settings:略
2Rigidbody(刚体组件)
Mass:质量。数值越大物体下落越快
Drag:阻力,数值越大物体反向加速度越大
Angular Drag:角阻力,数值越大自身旋转的速度减慢的越快
Use Gravity:是否使用重力
Is Kenematic:是否受物理的影响
Interpolate:设置图像差值
默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。
Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。
Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动
Collision Detection:碰撞检测
对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。
Discrete:非连续型检测模式(默认)
Continuous:连续检测。
更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使用Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。
Continuous Dynamic:连续动态检测。
对没有刚体的Mesh Collider或是对处在Continuous或是Continuous Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。
Continuous和Continuous Dynamic的区别在于对Continuous使用何种检 测 ,Continuous使用Discrete,而Continuous Dynamic使用Continuous。 但它们对物理性能都有很大影响。
刚体和刚体之间的连续碰撞检测,刚体的碰撞器必须是Box,Sphere,Capusle
刚体和非刚体(静态碰撞器)之间的连续碰撞检测,刚体的碰撞器必须是 Box,Sphere,Capusle,非刚体的碰撞器必须是Mesh
Constraints:冻结,停止某个轴向感应物理引擎的效果
Freeze Position:冻结x轴方向,y轴方向,z轴方向
Freeze Rotation:冻结x轴旋转,y轴旋转,z轴旋转
3Mesh Collider(网格碰撞体)
Convex:凸起,勾选后,与其它基本碰撞体发生碰撞
Inflate Mesh:网格膨胀,它有效地扩展了源数据的边缘宽度和斜切锋利的边缘,使所
得网格适合物理更好,将此设置为true可以降低碰撞网格的精度
Skin Width:皮肤厚度,一个合理的设定是使该值等于半径(Radius)的10%
Is Trigger:触发器
Material:材质,引用何种物理材质决定了和其他对象如何作用
Mesh:网格,获取对象的网格并将其作为碰撞体
4Capsule Collider(胶囊碰撞体)
Edit Collider:点击之后可编辑碰撞范围
Is Trigger:触发器
Material:材质
Center:碰撞体在对象局部坐标空间中的位置
Radius:碰撞体局部坐标宽度的半径
Height:碰撞体的总高度
Direction:对象局部坐标空间中胶囊纵向方向的轴
5Camera(摄像机)
Clear Flags:背景显示内容。默认是天空盒子
Solid Color:纯色,选择此选项显示background颜色
Depth Only:仅深度,用于游戏对象不希望被裁减的情况
Don't Clear:不清除,不清除任何颜色或深度缓存,其结果是,每一帧渲染的结果叠加在下一帧之上
Background:背景显示颜色。没有天空盒子将显示这个颜色。
Culling Mask:用于选择是否显示某些层,默认是Everything
Projection:摄像机的类型(投射方式)。
Perspective:透视,摄像机将用透视的方式来渲染游戏对象
Field Of View:视野范围,用于控制摄像机的视角宽度以及纵向的角度尺寸
Orthographic:正交,摄像机将用无透视的方式来渲染游戏对象
Size:大小,用于控制正交模式摄像机的视口大小
Clipping Planes:剪裁平面。摄像机的渲染范围,Near为最近的点,Far为最远的点
Viewport Rect:视图矩形。用四个数值来控制摄像机的视图绘制在屏幕的位置和大小,使用的是 屏幕坐标系,数值在0~1之间。坐标系原点在左下角。
Depth:深度。用于控制摄像机的渲染顺序,较大值的摄像机将被渲染在较小值的摄像机之上
Rendering Path:渲染路径。用于指定摄像机的渲染方法。
Use Graphics Settings:选择图形设置中的方法
Forward:快速渲染,传统的渲染路径,它支持每个像素的光照及平行光(directional light)的实时阴影
Deferred:延迟渲染,会准确如实地渲染光照和阴影。如果有许多实时光照,最适合它,需要一定程度的硬件支持,不支持移动设备
Legacy Vertex Lit:顶点光照,摄像机将对所有的游戏对象座位顶点光照对象来渲染
Legacy Deferred(light prepass):具有最低照明保真度和不支持实时阴影的渲染路径。它是前向渲染路径的子集。
在使用正投影时不支持延迟渲染。如果相机的投影模式被设置为正交,则这些值被重写,并且相机将总是使用快速渲染。
Target Texture:目标纹理,用于将摄像机视图输出并渲染到屏幕。
Occlusion Culling:遮挡剔除
HDR:高动态光照渲染,用于启用摄像机的高动态范围渲染功能,因为人眼对的范围的光照强度更为敏感,所有用高动态范围渲染能让场景变得更为真实,光照的变化不会显得太突兀。
Target Display:目标显示
6Directional light(平行光源)
Type:光源类型,可选择不同光源
Baking:用于烘焙模式的,在Lighting面板下点击Bake进行烘焙光照贴图时,生成对应的反射贴图
Color:光照的颜色
Intensity:光照强度
Bounce Intensity:放射光的光照强度
Shadow Type:光源投射的阴影类型
Cookie:一个遮罩,使光线在不同的地方有不同的亮度。如果灯光是聚光灯或方向光,这必须是一个2D纹理。如果灯光是一个点光源,它必须是一个立方图(Cubemap)
Cookie Size:缩放Cookie投影。只用于方向光。
Draw Halo:是否在点光源中使用白雾效果
Flare:设置光源粒子效果
Render Mode:光源渲染模式
Culling Mask:通过层可设置某些地图层不受光照影响
7Point light(点光源)
8Spotlight(手电筒)
1、游戏屏幕适配
屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑)
那么了解是适配之前首先要了解两个知识点:
1-1、什么是像素
单位面积中构成图像的点的个数。
特点:单位面积内的像素越多,分辨率越高,图像的效果就越好。
1-2、什么是分辨率?
分辨率可以从显示分辨率与图像分辨率两个方向来分类。
示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少分辨率的单位有:(dpi点每英寸)、lpi(线每英寸)和ppi(像素每英寸)。
特点:
图像的分辨率越高,所包含的像素就越多,图像就越清晰,印刷的质量也就越好。
同时,它也会增加文件占用的存储空间。
1-3、移动设备分辨率 –以iphone 为例
Paste_Imagepng
2、什么是适配
什么是适配?
适应、兼容各种不同的情况
游戏开发中,适配的常见种类
¤系统适配
针对不同版本的 *** 作系统进行适配,例如Unity3D 54系统
¤屏幕适配
针对不同大小的屏幕尺寸进行适配,例如Iphone5s,iphone7
iPhone的尺寸
35inch、40inch、47inch、55inch
iPad的尺寸
79inch、97inch
屏幕方向
竖屏
横屏
3、Unity3D 中的屏幕分辨
3-1
屏幕的宽高比(Aspect Ratio) = 屏幕宽度/屏幕高度
3-2
Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们可以通过调整摄像机Camera的orthographicSize属性值来调整摄像机的大小
Paste_Imagepng
注:Unity3D中这个比例的默认值是100,即100像素等于1单位。
如果我们的游戏屏幕有640像素高,那么实际换算成单位高度则是64个单位,
当我们摄像机的orthographicSize值是32时,摄像机大小刚好与屏幕大小相等
4、Unity3D中的屏幕适配设置
4-1:像素适配设置(固定分辨率)
Paste_Imagepng
2、屏幕宽高比
屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度
Paste_Imagepng
5、Unity3D中的摄像机设置
Unity编辑器中只能直接调整摄像机的高度,那摄像机的宽度是如何确定的呢?
答案就是我们最前面提到的屏幕宽高比。Unity会根据当前屏幕实际的宽高比和摄像机的orthographicSize值来计算出摄像机的宽度值,即:
摄像机实际宽度 = 摄像机orthographicSize 2 屏幕宽高比
即是
摄像机实际宽度 = 摄像机高度 屏幕宽高比
我举个例子说明一下,iPhone4的屏幕像素为640960,宽高比为2:3,假设Pixels To Units值为100,那么如果设摄像机高度size值为48,那么摄像机实际宽度按照公式算出64,刚好就是屏幕的单位宽度。
6、Unity3D中的像素比设置
Paste_Imagepng
6、Unity3D:关于适配的一些UI问题解决
这里就是重中之重,也是坑点较多的地方
调整相机为设计尺寸,添加Canvas到场景中进行UI设计,但是Canvas默认大小和相机并不重合。
怎么办?
6-1:办法1:
调整Canvas的Render Mode属性为Screen Space - Camera:
将映射游戏内容的Camera拖入Render Camera中,下一个属性Plane Distance表示UI
与Camera的在Z轴距离(其实就是变相反映了UI的Z轴位置)。
接着在Canvas Scaler属性里将Ui Scale Mode属性设置为Scale With Screen Size,
表示Canvas会根据屏幕比例缩放。
下面的Reference Resolution,表示UI宽和高一半的大小。例如设计尺寸为640x960,
则x应为640 / 2 = 320,宽应为960 / 2 = 480。
下面的Screen Match Mode属性选中Match Width Or Height,表示采用宽度(上文有提到过)
或高度(Unity自带适配方式)适配。然后Match调整为0或1,0表示完全宽度适配,
1表示完全高度适配,其他值表示介于两者之间采用比例适配
Paste_Imagepng
6-2:办法2:
调整Canvas的Render Mode属性为World Space
1、将Event Camera设置为映射游戏内容的Camera。
2、然后调整Rect Transform组件中的Width和Height为设计尺寸的宽和高,同时将Scale属性的X和Y都调整为001(对应unity2d默认情况下像素Pixels与引擎单位Unit对应比例100)。这时,Canvas的宽高正好与摄像机相同。
这两种方法都可以将UI调整为与设计尺寸一致,并且在编辑器中运行与真机中运行效果保持一致。
Paste_Imagepng
6-3:办法3:
给摄像机挂下图脚本就可以搞定比例问题:
Paste_Imagepng
6-4:设定好就如下图所示
Paste_Imagepng
解决屏幕分辨率适配的问题,其实就是解决如何让游戏摄像机尺寸限定在给定范围的问题。
7、适配总结
1游戏有效内容,指游戏中一定需要完整显示在屏幕上的内容;
2游戏实际内容,指全部的游戏内容,包括有效内容和主要是为了适配多分辨率的或其他不重要的目的而增加的内容。
实际的分辨率适配问题与三个尺寸相关,他们分别是:摄像机尺寸,游戏内容尺寸(包括有效内容尺寸和无效内容尺寸)和实际屏幕尺寸。
8、了解游戏中的摄像机
相机(Camera)
是向玩家捕获和显示世界的设备。通过自定义和 *** 纵摄像机,
你可以使你的游戏表现得真正独特。您在场景中摄像机的数量不受限制。
他们可以以任何顺序设定放置在屏幕上的任何地方,或在屏幕的某些部分。
Paste_Imagepng
8-1、摄像机属性:
Paste_Imagepng
Clear Flags 清除标识
确定了屏幕哪些部分将被清除,方便多个摄像机画不同的游戏元素
Paste_Imagepng
Skybox 天空盒:这是默认设置。屏幕上的任何空的部分将显示当前相机的天空盒。
如果当前的相机没有设置天空盒,它会默认在渲染设置(Render Settings )选择天空盒
Solid Color 纯色
任何空部分,屏幕显示为当前相机的背景色。
Depth Only 仅深度
如果你想绘制一个玩家的q,又不让它内部环境被裁剪,你会设置深度为0的相机绘制环境,
和另一个深度为1的相机单独绘制武器。武器相机的清除标志(Clear Flags )应设置 为depth only。
Don't Clear 不清除
此模式不清除颜色或深度缓存。每一帧在下一帧结束后绘制,看上去像是涂抹(smear-looking)的效果。
这在游戏中不常用,最好是在自定义着色器(custom shader)上使用。
Rendering Path-渲染路径
定义什么绘制方法被用于相机的选项
Paste_Imagepng
Use Player Settings 使用玩家设置:在玩家设置(Player Settings)相机使用哪个渲染路径。
Vertex Lit 顶点光照 :所有被这个相机渲染的物体都将渲染成Vertex-Lit物体。
Forward 正向渲染:所有对象每材质渲染只渲染一次,和Unity 2x中的标准一样
Deferred 延迟照明:所有物体将在无光照的环境渲染一次,然后在渲染队列尾部将物体的光照一起渲染出来。
Traget Texture-目标纹理:
Paste_Imagepng
渲染纹理 (Render Texture)包含相机视图输出。这会使相机渲染在屏幕上的能力被禁止。
补充:Vertex Lit:顶点光照
这个Shader是Vertex-Lit,是最简单的Shader之一。这个Shader渲染代价是非常小的
所有照射在该物体上的光源通过一次光能传递渲染完成并且只计算顶点光源。
因为是Vertex-Lit,所以不会有任何基于像素渲染的效果,例如:Light Cookies,Normal Mapping
和Shadows。这个Shader对模型的细分同样更加敏感,假如在很靠近立方体的地方放置一个
点光源,并且应用这个Shader,这个光源只会在此角落进行计算
General shader performance 通常的着色器性能
Unlit This is just a texture, not affected by any lighting�不发光。这只是一个纹理,不被任何光照影响
VertexLit 顶点光照
Diffuse 漫反射
Normal mapped �法线贴图,比漫反射更昂贵:增加了一个或更多纹理(法线贴图)和几个着色器结构
Specular This adds specular highlight calculation �高光。这增加了特殊的高光计算
Normal Mapped Specular Again, this is a bit more expensive than Specular �高光法线贴图。这比高光更昂贵一点
Parallax Normal mapped This adds parallax normal-mapping calculation �视差法线贴图。这增加了视差法线贴图计算
Parallax Normal Mapped Specular�视差高光法线贴图。这增加了视差法线贴图和镜面高光计算
链接:>
很多"非老手"被网上流行的FogOfWar工程 一段猛如虎的 *** 作,看的一头雾水,濒临劝退的边缘。下面希望做一些思想工作,希望更大限度挽回这些"非老手"。
运行方法:
整体思路:
使用MonoBehaviourOnRenderImage方法,
将准备渲染到屏幕的RenderTexture source, 用如下 FogOfWarEffectshader 做一下“颜色乘法”运算
再渲染到屏幕,实现战争迷雾。 你可以想象上面的 col 极端2种情况:
于是我们把战争迷雾“庞大”(其实并不庞大)的工程,简化成解决1个大问题:把是否可视区域 映射到 FogOfWarEffectshader 的 col 。这个大问题可以解剖为如下几点:
42 利用转置矩阵把归一化坐标映射到整个大地图(是否可视区域贴图),获取对应的的像素点
希望解说到这里,能够换回一些“中手”。更仔细的解说,挽回“新手“”后面继续奉上
在Unity中,我们可以这样理解:Material(材质)包含Map(贴图),Map包含Texture(纹理)。
首先在工程中创建一个Terrain(地形)和一个Cube(立方体),然后我们基于这两个物体来深入学习什么是纹理、贴图和材质。
下面我们添加一个地形纹理和一个LOL泳池派对纹理。(其实就是)
我们来学习一下纹理的Inspector视图中都有什么属性功能,以“泳池派对”为例。
效果如下:
详情如下:
Texture:纹理
Normal map:法线贴图
(游戏场景中譬如雕刻这种3D细节,如果做3D模型的话,就会浪费显示芯片,使游戏性能下降,便会用法线贴图,既不影响玩家体验游戏又不影响游戏性能)
Editor GUI and Legacy GUI:编辑器的GUI和传统的GUI
Sprite(2D and UI):精灵
Cursor:设为光标
Cubemap:立方体贴图
Cookie:聚光灯贴图
Lightmap:光照贴图
Advanced:高级选项(当你想要有纹理的具体参数并想拥有纹理的完全控制的时候选择该项)
UV坐标:水平方向是U,竖直方向是V。因为(纹理)是一个二维的平面,所以只需要UV坐标便可以确定的位置。(当然也有三维贴图,要用到UVW坐标,暂时还接触不到。)
贴图:一种就是就是把纹理通过UV坐标映射到3D物体的表面,另一种就是把纹理加入一些功能,这两种都是贴图。贴图具有 UV 坐标属性或者一些功能,而纹理没有。
我们把Terrain加上纹理,此时这个名为“地形”的纹理就成为了Terrain的贴图。
Shader负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。
将输入的贴图或者颜色,加上对应的Shader,以及对Shader的特定的参数设置,将这些打包在一起就是一个材质了。之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染。
点击Create,添加一个材质和一个物理材质。
选色:
上色:
Dynamic Friction:动摩擦系数
Static Firction:静摩擦系数
Bounciness:d性系数
Friction Combine:联动摩擦
Bounce Combine:联动反d
Average:取平均值。
Minimum:取最低值。
Multiply:取相乘值。
Maximum:取最大值。
以上就是关于Unity中实现贴图融合案例-墙壁上留下d痕全部的内容,包括:Unity中实现贴图融合案例-墙壁上留下d痕、Unity3D 贴图格式 Generate Mip Maps、Unity常用组件参数详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)