网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月31日漏签0天
unity3d吧 关注:116,504贴子:561,089
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 19回复贴,共2页
  • ,跳到 页  
<<返回unity3d吧
>0< 加载中...

【教学】Unity 5.0新功能教学

  • 取消只看楼主
  • 收藏

  • 回复
  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼





从3月20号开始一直在研究Unity5的新功能, 重新通读了一次官方Manual手册.
这次的大版本更新, 我个人感觉只能用"威力强劲"来形容.
这次的教学定位很清晰, 适合对Unity4有一定程度了解的朋友, 并不适合完全的初学者.
大家可以将我漏讲的部分提醒我一下, 我会及时更新相应方面的内容.
每个方面写在一个楼里, 对应方面有什么不懂的地方可以在楼中楼跟帖, 我会及时回复.
祝各位学习愉快.


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
章节1:
先来两个最关心的新功能, 第一章先讲PBS, 第二章讲光影GI.
说到PBS, 首先应该想到的是Unity自带的两个新的Shader, 分别是Standard以及Standard(Specular setup)
如果你没有为你的材质选择这两个Shader之一, 那么你的材质是不会有PBS效果的, 对比一下PBS.


第一幅图是使用了Unity4中的Bumped Specular, 第二幅图使用了Standard(Specular Setup), 值得一提的是为了展现最纯粹的光照效果我特意关掉了PBS的另一大特性, Reflection. 而如果开启了Reflection, 上面的截图差距应该更加明显才对, 相信各位这里也是一目了然.
PBS的具体原理是什么, 这个我没有太大的兴趣去研究, 有兴趣的同学可以自己搜索相关知识.
Standard以及Standard(Specular setup)两者的区别是, Standard使用了金属模拟的外观, 而Standard(Specular Setup)使用了镜面模拟的外观.
使用中, 对于任何不是金属的材质, 都应该选择Standard(Specular Setup).

看图, 左边是Standard, 右边是Standard(Specular Setup), 可以看出两者的差别是很明显的.
Unity官方的意思是, 用这两种Shader可以替代Unity4之前的大部分的Shader. 事实证明也的确如此.
这里先用Standard(Specular Setup)作为教程例子, 有兴趣的朋友可以自己研究Standard, 无非就是差了两个参数.

这里是Standard(Specular Setup)的参数设置界面. 这里不讲解Unity4当中很熟悉的概念. 比如Specular和NormalMap或者Tilling以及Offset这些.
RenderingMode---选择Shader的渲染形式, 四种可选:
`Opaque---不透明
`Cutout---透明但没有半透明
`Fade---整体透明
`Transparent---只有像素透明(意思就是相比起Fade来说, 材质上的高光等信息不会变得透明化).
Albedo---就是Diffuse漫射的意思, 但是这里的Alpha通道还会控制透明程度.
Emmision---这个很有意思, 你在Emmision中设置的像素以及他的强度会影响GI, 至于GI是什么, 待会再说. 而他是如何影响GI的, 你可以选择Realtime或者Baked, 这个我会放在第二章来讲.
Secondary Maps---这里可以赋予细节贴图.
UV Set---设置UV通道.
技巧: 你赋予上去的贴图, 按住ctrl点击缩略图可以打开贴图预览.
值得一提的是, 两个Standar材质是经过高度优化的, 你没有赋予贴图的部分在工程打包的时候是不会造成任何性能消耗的, 比如你没有为"Heightmap"赋予任何贴图, 那么你就无需担心这个Heightmap在Shader中有什么亢余.
总结一下,
PBS支持什么,
支持GI,
什么是GI, 先下课, 累死我了.


2025-08-31 13:30:31
广告
不感兴趣
开通SVIP免广告
  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第二章GI.
重头戏来了!
GI是什么? GI =直接光照+间接光照+环境光+反射光.
直接光照先不用说了,
间接光照是光线在物体上反射所带来的光照. 核心参数: 每个光源上的Bounce Intensity.
环境光可以直接理解为你天空盒的颜色, 蓝天白云, 那么环境光就是蓝色白色. 核心参数: Lighting视图中的Ambient Intensity.
反射光可以理解为镜面反射一样的存在, 核心参数: Lighting视图中的Reflection Intensity
请各位逐一尝试这四个参数并且尝试能将场景调成纯黑然后再调回来, 就能理解其中的概念了.
GI分为两种, 一种是Precomputed Reatime GI, 这种GI需要预先计算, 计算场景中所有的Static物体的信息, 并且允许在运行时任意修改光源的Bounce Intensity或者移动光源的位置. 所有的变化都是实时的.
第二种是Baked GI, 这种GI不会预先计算但会进行预先烘焙, 无法像Precomputed Realtime GI那样在运行时更改光源.
GI的重点在于Bounce , 可以将Static物体上的光反弹到其他Static物体上, 无法将非Static物体上的光反弹到Static物体上. 也无法将Static物体上的光反弹到非Static物体上, 但是Unity5引入了新的概念, 那就是Realtime的LightProbe, Unity4中的LightProbe只能静态烘焙, 而Unity5的LightProbe会实时捕捉包括Precomputed Realtime GI的Bounce光在内的任何光线信息并且将其赋予非Static物体上.
要想完全理解GI, 首先要好好说一下Lighting面板.

先说重点的Scene页面.

Environment Lighting这些内容控制的是场景总体的光线信息, 包括天空盒的设置, 可以赋予一个天空盒材质上去, 而天空盒材质在Unity5里面也有更新, 很有意思, 大家可以试试, 新建一个材质然后选择Skybox/Procedural就行了.
Sun---如果你的天空盒材质是Skybox/Procedural那么这里允许指定一个Directional Light, 你试着旋转一下这个Directional Light就知道他是干嘛的了.
Ambient Source---环境光来源, 一般都是天空盒. 如果你的天空盒会在游戏运行时实时变化, 一定要在Ambient GI这里选择Realtime, 否则可以选择Baked.
Reflection Source---镜面反光的来源, 说到镜面放光, 需要说到Reflection Probe, 可以理解为Reflection Probe会规定一个区域, 任何进入这个区域的物体的镜面反光的信息都会被覆盖, 而没有进入任何Reflection Probe的物体的镜面放光的信息就是这个Reflection Source所指定的内容.
Reflection Bounces---当你使用Reflection Probe的时候, 最多允许镜面来回反弹几次, 举个例子, 两面镜子对着放, 会有无穷的发射次数, 而这显然是有性能消耗的, 这里指定这个来回反弹的最大的次数.


Precomputed Realtime GI的概念是, 预先计算场景中的所有静态物体的信息, 具体计算出来了哪些信息咱们开发者不用操心, 这些计算出来的信息会用于实时GI.
Realtime Resolution控制的是实时GI的分辨率, 建议不要调太高.

CPU Usage这个越大, 在调节Realtime光源的时候, GI效果就会响应得越快.

Baked GI就是烘焙光影贴图的内容了. 可以和Precomputed Realtime GI同时存在.
Baked Resolution---Bounce效果的分辨率, 由于是Baked的, 所以不用像Realtime那样设置得很小.

Baked Padding---防止光照贴图的像素在物体之间溢出. 是物体之间而不是UV簇之间, Unity没有智能到可以自动帮我将一个物体的UV拆开来然后再合并.

Compressed---是否压缩光照贴图, 提高性能, 缩小容量, 但画质会降低.
AO不用说了吧
Final Gather---开启后效果的确有很大的提升, 但是会让烘焙变慢, 成品必开.

Ray Count---与Final Gather有关. 该值越大效果越好. 烘焙也越慢. 经过仔细对比, 默认的1024和4096几乎没有区别, 但4096烘焙得出奇地慢. 事实上1024和128也几乎没有区别. 反正在我的小测试场景中是几乎没有任何区别.

General GI组的这些参数同时适用于实时GI以及烘焙GI.
Directional Mode这个真是太有意思了!
靠, 度娘一楼只能插十张图, 楼下继续.


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Directional Mode这个真是太有意思了!

图中是静态物体+Bake光源. 可以看到如果选择了Directional, 会像Unity4一样对静态物体处理得很不好, 但如果选择了Directional Specular, 画质马上就提升了一个等级.
不仅对于静态物体+Baked光源有提升, 对于静态物体+Realtime光源也有提升. 但是对于动态物体是没有提升的.

这两幅图是静态物体+动态光源. 可以说Directional Specular直接提升了静态物体对于直接光和间接光的效果.
但是这里有一个不得不重视的警告, 说Directional Specular对于SM2.0以及GLES2.0无法支持. 如果选择了Directional Specular, 就说明我不得不在我的PC游戏的最低配置上提升需求(当然了要是在八年前是要这么说的)! 这里说一下GLES(OpenGL ES)和SM(Shader Model). OpenGL ES针对手机平台, SM针对主机和PC平台. 从iPhone5s开始支持了OpenGL ES 3.0版本. 而对于SM版本来说, 目前还停留在SM2.0的显卡基本已经不存在了.
Indirect Intensity---同时调节Bounce, 静态物体的自发光对其他物体的影响, 以及ambient lighting的强度.
Bounce Boost顾名思义
Default Parameters---设置一个LightmapParameters资源上去. 这么做是为了复用性.
Atlas Size---Atlas尺寸.

Fog 组合Other Settings组的内容都是Unity4就有了的. 新功能教学中不赘述.


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
下面说LightmapParameters,为了复用性, 将LightmapParameters做成了资源.

LightmapParameters资源可以赋予全局, 或者赋予单个物体来覆盖全局中的设置.

Precomputed Realtime GI这组的都是与Precomputed Realtime GI相关的.
Resolution---Realtime Resolution会乘以这个值来得出最终要使用于实时GI的Resolution.
Cluster Resolution---Too large clusters will result in light/shadow bleeding and too small clusters slow down the precompute. 数值越小效果越精确, 但是烘焙起来也越慢.

什么是Cluster? 看图
Irradiance Budget---数值越小效果越平滑. 但是更加消耗内存和少量的CPU.
Irradiance Quality---数值越大效果越好, 但是预计算越慢. 对游戏运行时的性能消耗无影响.
Backface Tolerance---数值越小, GI就越容易无视物体的背面. 同时, 两个完全贴合的物体的贴合部分也越容易被GI无视.
Modelling Tolerance---数值越小效果越好但是不能是0.
Edge Stitching---不能说完全消除但是可以缓解UV接缝的视觉纰漏.
Is Transparent---还记得刚才说过什么吗? LightmapParameters资源可以赋予全局, 或者赋予单个物体来覆盖全局中的设置. 没错, 为透明的物体赋予可以覆盖全局设置的LightParameters, 并且将这个LightParameters中的这个Is Transparent开启是更好的选择.

System Tag---和Is Transparent一样, 使用单独物体的LightParameter来确定这个物体被考虑进哪个System. 说到System, 可以理解为Precomputed Realtime GI的Atlas.

Baked GI这里的选项都是针对Baked GI的.
Blur Radius---光照贴图的模糊处理. 可用于将烘焙出来的阴影进行柔化处理.
Anti-aliasing Samples---数值越高, 烘焙出来的阴影的锯齿越少.
Direct Light Quality---数值越高烘焙效果越精确. 烘焙时间也会更长.

Baked AO这组是与AO有关的参数.
Quality---数值越高AO的质量越高.
Anti-aliasing Samples---AO抗锯齿.
Baked Tag---这个参数虽然和Baked AO组离的很近, 但是注意观察其实是有一定Space的, 因此他不属于AO组. 控制光照贴图的Atlas编号.


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

下面说一下Unity5也是一个很大的更新. 那就是AudioMixer.
原理:
这个东西的工作原理真的很棒, 很难再想到还有什么比这个更棒的了.
如何使用: 场景中新建一个AudioSource, 然后再在Project视图里面新建一个AudioMixer, 打开这个AudioMixer的三角形按钮, 将里面的"Master"赋予到AudioSource的Output上. 这样一来AudioSource的音频信号会通过Master这个Group最后播放出来. 而你在这个过程中可以做很多很灵活的事情, 下面大概走一遍:
先说一下这四个都是啥.
Mixers就是你当前选中的Mixer, 可以将一个Mixer在这个视图里拖拽到另一个Mixer上, 先不要这么尝试, 不然你会发蒙, 等你看完这楼的时候你再这么尝试. 听我的.
SnapShots可以在脚本中实时切换, 用来切换参数.在不同的SnapShot之间有所区别的只有效果器的参数,
Views可以切换Groups的可见状态. 切换Group的可见状态只有在编辑器中更加方便而已, 在运行时并无实质性的作用.
Group就是用来播放音频并且做设置的地方. 在Group视图中可以将一个Group拖拽到另一个Group上, 这样称之为路由. 将一个Group的信号路由到另一个Group上. 你现在动手一下, 在这里点加号新建一个Group然后命名为A, 然后在Project视图中找到你新建的这个A, 将这个A拖拽到你场景中的AudioSource上, 然后播放你的AudioSource, 看一下.你的这个A是不是有响应了? 然后停止播放关卡, 新建一个Group命名为B, 然后在Group视图中, 将A拖拽到B上面, 然后再播放场景, 然后观察一下, 再想一下, 再继续往下看.
经过上面的Group之间的测试你大概已经懂了AudioSource的工作原理了. 你现在试着在B上面加入一个效果器, 就加入一个Low Pass Filter好了. 将这个Low Pass Filter的Cutoff设置为2000. 然后再在A上加入一个High Pass Filter并且将cutoff设置为1500. 再播放一下听一听, 恭喜你现在掌握初步的诀窍了.
为何这样设计?看一下这幅图我的意思是好好看一下他的结构以及每个Group的名称, 你就能发现, 比如我在FX这个Group上面加的效果器可以用于FX下面的所有Group上面, 而FX下面的Group又可以拥有他们自己独立的设置. 这就是路由的奇妙.
在AudioMixer窗口的标签上右键点击一下可以看到有一些选项.
Show bus connections---如果勾选上, 会显示Send和Receive的关系.
Use RMS metering for Display--- 先说一下关于RMS和peak:
peak = 实时的峰值
rms = 方均根, 一定时限内的平均值
rms 使用上比较接近耳朵的感受, peak 就实实在在的电子数值.
在播放时, 开启Edit in Play Mode之后, 任何做过的改变都会被保留. 并且此时无法通过脚本修改参数.(比如通过AudioMixer.SetFloat来进行参数修改, 或者通过AudioMixerSnapshot.TransitionTo()来转换SnapShot都会无效, 这也是必然的).


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这一章讲一下布料系统, 这次的布料系统有很大的改良.
Unity4中, 需要对SkinnedMeshRenderer使用SkinnedCloth, 或者对Cloth Renderer使用Interactive Cloth, 很麻烦, 在Unity5中, Cloth合二为一了.
Cloth只能必须和Skinned Mesh Renderer搭配使用, 但是这不代表使用简单的物体时还必须在Max中导出一个带有蒙皮信息的FBX, 其实可以新建一个GameObject然后赋予Cloth组件, 这会自动添加Skinned Mesh Renderer组件, 然后在Skinned Mesh Renderer组件中赋予基本体的Mesh上去并且设置正确的材质也完全可以.
布料可以接受外部影响,但完全不会将影响赋予外部刚体, 换句话说, 布料系统的物理模拟是单向的.

出于性能的考虑, 可以对Cloth产生影响的Collider只有两种, SphereCollider以及CapsuleCollider, 但是SphereCollider可以赋予两个为一组(当然了还可以只赋予一个, 第二个保持null), 那么通过组合这两个SphereCollider可以出现第三种, Unity会将这组的两个SphereCollider进行相连, 那么就可以有圆锥形的Collider.
按这个
按钮来打开编辑Constraint模式,
Max Distance可以设置每个顶点最大可移动距离. 最常用的用法是将不能动的顶点的Max Distance设置为0.
Surface Penetration控制的是顶点最大可以嵌入到Mesh里面的程度. 在布料网格顶点比较稀疏的情况下可以明显对比出差别. 具体是什么概念我不太清楚. 不过将顶点的Surface Penetration设置得很低会看起来很不正常, 默认, 也就是Unconstrained应该是一个较高的值, 没有任何问题. 不知道在什么情况下需要将这个值设置得低一些呢? 哪位大神知道的话欢迎在本楼补充.

Visualization这里能够选择当前在Scene视图中预览Max Distance还是Surface Penetration. (这两者二选一), 还能选择是否让操作影响视口背面的顶点.
Select编辑模式要先通过框选, 或者Shift+点击来多选, 来选中顶点, 然后勾选Max Distance或者Surface Penetration前面的复选框, 代表我现在要改变选中的顶点的值了! 然后再在后面的数值里面输入想要的数值就OK了, 要想将当前有数值的顶点设置为Unconstrained, 只需要选中那些带有数值的顶点然后将对应复选框取消勾选即可.
在Paint模式中, 这个按钮
代表要绘制这里设置的值了!
而这个复选框代表的意思是是否想为现在已经有值的顶点Paint成为Unconstrained的顶点.

Stretching Stiffness---拉扯硬度.
Bending Stiffness---弯曲硬度.
Use Tethers---默认开启, 用于方式过度拉伸
Use Gravity---是否使用世界重力.
Damping---阻尼会应用于每个布料顶点. 要想打造看上去抖动更小的布料, 可以试试这个.
External Acceleration---常量外力.
Random Acceleration---随机外力.
World Velocity Scale---与World Acceleration Scale共同组成布料的GameObject.transfrom的运动会对物理模拟造成的影响比例.
World Acceleration Scale---与World Velocity Scale共同组成布料的GameObject.transfrom的运动会对物理模拟造成的影响比例.
Friction---当布料碰到在
这个列表中存在的Collider时所产生的摩擦力, 这只会影响布料的模拟. 上面说过了布料的物理模拟是单向的.
Collision Mass Scale---How much to increase mass of colliding particles. 这个参数我不懂, 求补充.
Use Continuous Collision---使用Continuous Collision, 增加消耗, 减少直接穿透碰撞的几率.
Use Virtual Particles---Add one virtual particle per triangle to improve collision stability.
Solver Frequency---Number of solver iterations per second. 显然是一个优化参数, 默认120很高了, 我可以试着调低一些.
Sleep Threshold---静止阈值.
Capsule Colliders---要对布料产生交互的胶囊碰撞体.
Sphere Colliders---要对布料产生交互的ClothSphereColliderPairs. 可以理解为他是按照一组来的, 一组中可以只有一个SphereCollider, 也可以有两个, 当有两个的时候, 那么这两个SphereCollider会在布料的碰撞系统中被”焊接”起来. 这样就允许通过两个大小不同的SphereCollider来组合成一个圆锥形状的碰撞体了.


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这一章讲一下动画系统的更新.
首先要说一下StateMachineBehaviour.

可以为Animator的每个State都赋予一个或多个Behavior.

使用这里的New Script按钮来创建StateMachineBehaviour是最方便的, 这样创建出来的脚本不仅自动继承自StateMachineBehaviour类, 还会自动添加经过注释的Message.
需要注意的是, 不要在Awake中使用Animator.GetBehaviour.
StateMachineBehaviour可用的内容有:

上面这些是用于State的.

上面这两个是用于SubStateMachine的.
对于StateMachineBehaviour,可以使用一个SharedBetweenAnimatorsAttribute属性, 有了他, 在多个相同的Animator之上, 仅会生成一个实例. 既然是一个实例, 那么变量当然也是共享的.


2025-08-31 13:24:31
广告
不感兴趣
开通SVIP免广告
  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://tieba.baidu.com/p/3655357250?pid=66015232147&cid=0#66015232147
http://tieba.baidu.com/p/3671698922?pid=66365237249&cid=0#66365237249
在此艾特所有在这两个帖子里留名过的朋友.


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@张宇成yr @我是槐蛋 @响指为玫瑰 @wblboy @伟大冒险家戴维


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@转角遇到倒霉鬼 @越狱不犯法 @b2ylove @taotaohacker @StatusChicken


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@xigemaqq @ly525243 @LatinAmerica10 @czuy119 @一场璃梦悬星河


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@reopen4 @灰蓝色海 @夜孤鸣 @邪恶的PS @634908543


  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@1137770335 @634908543w @oO幻想FLyOo @aqw12344 @温暖如你模样


2025-08-31 13:18:31
广告
不感兴趣
开通SVIP免广告
  • 只待苍霞
  • Script
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@怜幽幻月 @FORREST张 @低调的小烜 @hasegawa1234 @branmaxwell


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 19回复贴,共2页
  • ,跳到 页  
<<返回unity3d吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示