U3D-特殊文件夹与脚本编译顺序

官方原文

特殊文件夹与脚本编译顺序

Unity保留了一些项目文件夹的命名,分别表示了一些特殊用途。这些目录对脚本的编译顺序有写影响。目录的名称分别为:

  • Assets
  • Editor
  • Editor default resources
  • Gizmos
  • Plugins
  • Resources
  • Standard Assets
  • StreamingAssets

参考特殊文件夹命名的用途

有四个编译阶段。脚本的编译阶段取决于存放的目录。

有个非常重要的特性:脚本必须被其他的脚本引用。基本准则:编译中,在任意阶段都不能被引用。在这个阶段前的都完全可以使用。

另一种情况:当某个脚本用一门语言编写在被另一门语言的类引用时(如:一个Unity脚本(内置的Unity脚本)文件使用了C#定义了一些类成员)。这里的准则是:被引用的类必须在这之前被便编译过。

编译阶段如下:

  • 阶段1:运行时脚本,在目录为:Startdard Assets, Pro Standard AssetsPlugins
  • 阶段2:编辑器脚本,在位于Standard Assets, Pro Standard AssetsPlugins的顶级目录下的Editor目录脚本。
  • 阶段3:不在Editor下的其他脚本。
  • 阶段4:剩下其余的脚本(就是Assets/Editor下的脚本)

举个典型编译顺序的重要栗子:当一个Unity脚本(内置的Unity脚本)需要引用一个C#类文件。为了实现,你需要将这个C#文件置于Plugins目录内,且Unity脚本文件不在这些特殊目录下。如果不这样做,将会报错一个:C#类无法被找到的错误。

注意:Standard Assets目录只能在Assets目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的U3D镜像模糊的shader脚本: ```c# Shader "Custom/MirrorBlur" { Properties { _MainTex ("Texture", 2D) = "white" {} _BlurSize ("Blur Size", Range(0.0, 2.0)) = 0.5 _MirrorAxis ("Mirror Axis", Range(0, 1)) = 1 } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float _BlurSize; int _MirrorAxis; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { float2 uv = i.uv; if (_MirrorAxis == 0) uv.y = 1.0 - uv.y; else uv.x = 1.0 - uv.x; fixed4 col = tex2D(_MainTex, uv); float2 blurDir = float2(0, _BlurSize); float4 blurCol = tex2D(_MainTex, uv); blurCol += tex2D(_MainTex, uv + blurDir) * 0.25; blurCol += tex2D(_MainTex, uv - blurDir) * 0.25; blurDir = float2(_BlurSize, 0); blurCol += tex2D(_MainTex, uv + blurDir) * 0.25; blurCol += tex2D(_MainTex, uv - blurDir) * 0.25; return blurCol / 2 + col / 2; } ENDCG } } FallBack "Diffuse" } ``` 这个shader使用了一个名为_MainTex的2D纹理作为输入,并接受一个名为_BlurSize的模糊尺寸参数和一个名为_MirrorAxis的镜像轴参数。 在顶点着色器中,仅仅是将顶点位置变换到剪裁空间,并将纹理坐标传递给片段着色器。 在片段着色器中,首先根据_MirrorAxis参数计算出镜像的纹理坐标,然后进行高斯模糊处理。最后,将模糊后的颜色和原始颜色混合在一起,以产生镜像模糊的效果。 请注意,这个shader仅仅是一个简单的示例,可能需要进一步的优化和调整才能达到所需的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值