Unity 如何使用WaveformPreview

Attribute是C#的功能在Unity中可以使用Attribute来给变量和方法增加新的属性或者功能。

以下是Unity官网文档中找到的所有Attribute下面将按照顺序,逐个对这些Attribute进行说明和小的测试
部分例子使用了Unity官方的示例。

例如如下代码可以完成下图的效果

汇编级属性,使用该属性的Class会被认为是EditorClass具体用法不明。

这个属性是Unity4.5之后提供的新功能鈳以在Inspector上面对变量追加一个右键菜单,并执行指定的函数

对一个MonoBehaviour的子类使用这个属性,那么在同一个GameObject上面最多只能添加一个该Class的实例。
尝试添加多个的时候会出现下面的提示。

这个属性让Class在Editor模式(非Play模式)下也能执行
但是与Play模式也有一些区别。
Update方法只在Scene编辑器中有粅体产生变化时才会被调用。
OnGUI方法只在GameView接收到事件时才会被调用。

这个属性可以在Inspector中变量的上面增加Header

在变量上使用这个属性,可以讓public的变量在Inspector上隐藏也就是无法在Editor中进行编辑。

在OnRenderImage上使用可以让渲染顺序在非透明物体之后,透明物体之前

渲染从从HDR变为LDR 具体使用方法不明。

在string类型上使用可以在Editor上输入多行文字。

在变量上使用可以指定该变量在build的时候,不要转换为目标平台的类型

在变量上使用,在Flash平台build的时候对该变量不进行类型检查。
Unity5.0中已经移除了这个属性

禁止对变量和方法进行重命名。
Unity5.0中已经移除了这个属性

在int或者float类型上使用,限制输入值的范围


如果尝试移除被依赖的Component会有如下提示

在方法上添加该属性,可以网络通信中对该方法进行RPC调用

此属性仅茬Unity5上可用。
在游戏启动时会自动调用添加了该属性的方法。

在变量上使用该属性可以强制该变量进行序列化。即可以在Editor上对变量的值進行编辑即使变量是private的也可以。
在UI开发中经常可见到对private的组件进行强制序列化的用法

使用该属性可以在Inspector上增加一些空位。 例子:

这个屬性可以为变量上生成一条tip当鼠标指针移动到Inspector上时候显示。

用来声明API的版本兼容性

该属性可以令变量以另外的名称进行序列化并且在變量自身修改名称的时候,不会丢失之前的序列化的值

将一个class标记为指定类型的自定义预览

可以在Scene视图中显示自定义的Gizmo
下面的例子,是茬Scene视图中当挂有MyScript的GameObject被选中,且距离相机距离超过10的时候便显示自定义的Gizmo。

在Class上使用可以在Unity启动的时候,运行Editor脚本
需要该Class拥有静态嘚构造函数。
做一个创建一个空的gameobject的例子

在方法上使用,可以在Editor中创建一个菜单项点击后执行该方法,可以利用该属性做很多扩展功能 需要方法为static。

在这里就使用官方的例子:

在打开一个Asset后被调用

该属性是在build完成后,被调用的callback
同时具有多个的时候,可以指定先后順序

    这篇文章的主要内容是讲Unity的内置鈳编程渲染管线LWRP的渲染流程即这一帧内从开始到结束所经过的渲染步骤。

这个脚本里描述了LWRP在一帧内所做的所有事情

3.如果相机上有IBeforeRender相關的组件话,将会执行这些组件所定义的行为这一般是开放给开发者,自己定义的某些渲染行为的接口

4.如果场景里需要主光源渲染阴影那么开始给所有物体绘制阴影。在绘制阴影时会使用所需要绘制物体的“ShadowCaster” pass进行阴影的渲染。并且在这一阶段,cpu会准备各种渲染阴影所需要的数据设置各种参数和状态,供shader使用

5.如果场景需要渲染AdditionalLightsShadow,那么就渲染这些阴影这一过程与上一阶段类似。

6.为LWRP设置摄像机参數包括摄像机的视口,各种矩阵参数位置,屏幕信息以及全局时间属性等,供后续Shader的使用

7.如果需要处理深度相关的信息就会开始進入到DepthOnlyPass阶段。这一阶段主要处理的是RenderQueue为opaque的物体然后通过物体材质上的"DepthOnly"的shader,将处理结果保存在名为“_CameraDepthTexture”的贴图上这样,在后续的阶段峩们就可以在shader中直接使用“_CameraDepthTexture”的property来获取场景中物体的深度信息了

8.如果相机上有IAfterDepthPrePass组件,还会进行这些组件所定义的pass行为这些都是开放给开發者去自定义一些深度处理行为的接口

9.如果处理屏幕空间的阴影,则会进入ScreenSpaceShadowResolvePass阶段这一阶段好像就是用一个内置的材质处理了一下得到的屏幕空间遮挡的贴图。这一阶段的作用作者也不是很清楚==

10.设置LightWeightConstansPass。顾名思义就是设置渲染管线里面的shader所需要的常数。比如我们可以在渲染不透明物体之前执行这个阶段来增加许多我们想要在渲染时获取的常数

12.如果摄像机上有IAfterOpaquePass的组件,则会进行这些组件所定义的pass行为这些是开放给开发者自定义行为的阶段

13.如果开启了不透明物体的后处理相关的行为(postProcess),会在这一阶段处理后处理的pass。后处理效果是unity官方推出嘚一个提高画面质量的插件这里不做过多描述

15.如果摄像机渲染天空盒,就进行天空盒的渲染颜色和深度信息会分别渲染到之前我们所創建的color Texture 和depth Texture上

17.如果需要使用DepthTexture,则把之前渲染得到的深度信息拷贝到深度贴图上并设置全局的深度贴图“_CameraDepthAttachment”属性供shader使用,此外还会设置一些關键词的状态

21.如果开启了透明物体的postProcess相关行为,在这一阶段处理后处理的pass类似之前不透明的物体。

22.如果没有开启透明物体的postProcess行为且鈈是offScreenRender,那么会进行混合把 之前我们创建的color Texture的像素信息拷贝到屏幕上,显示最终这一帧的屏幕图像

23.如果摄像机上有IAfterRender的组件,执行开发者洎定义的这个Pass行为

至此,在游戏运行中整个LWRP的渲染步骤结束,最终的一帧画面就显示在了屏幕上

注:具体以源码为主,因为以上的步骤都是对源码的简练总结不一定100%的准确,但是大部分的步骤是正确的

将三维软件中对mesh的编辑同步到unity

當然也可以使用以下任意一种三维软件

下面是提供的百度网盘下载地址
建议和本文一样使用2.83版本

不同三维软件安装方式可根据进行配置,這里只叙述Blender安装说明


打开Blender点击偏好设置
选择刚才下载并解压的blender-2.83.zip(如果你的Blender和我的不一样,使用对应版本号即可)
跟下图相同则表示插件已经囸常安装
Blender到这里就说明成功一半了

Unity版本最好在f1及以上(我用的就是这个版本)2019.2实测不可行

查看Blender是否开启自动同步,如果没有就开启
在Blender创建并妀变图形即可在Unity中实时查看改变如下图

我要回帖

更多关于 借呗怎么使用 的文章

 

随机推荐