You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何实现立方体底部的照亮效果?

嘿,我来给你分享几个在Unity里照亮立方体底部的实用方法,亲测靠谱:

方法一:定向光源精准打光

这是最直接的方式,适合需要模拟自然向下光照的场景:

  • 在Hierarchy面板右键选择Light > Directional Light,添加一个定向光源
  • 调整光源旋转:把X轴拉到90°左右(光线会垂直向下),或者直接在场景视图里拖动光源手柄,让光线对准立方体底部
  • 要是只想让这个光源影响立方体,就在光源的Culling Mask里只勾选立方体所在的层,避免干扰其他物体
  • 最后微调Intensity(强度)和Color(颜色),直到底部亮度符合你的预期

方法二:给底部加自发光材质

适合不需要外部光源,只想让底部自主发光的场景:

  • 右键创建一个材质(Create > Material),选个支持自发光的Shader,比如Standard或者URP的Lit
  • 在材质面板找到Emission选项,勾选启用,调整自发光的颜色和强度
  • 给立方体加个覆盖底部的子物体(比如Plane或者单独拆分的Mesh),把这个自发光材质赋值给它就行
  • 这样哪怕场景没其他光源,底部也能保持发光效果

方法三:点光源贴近底部

适合局部小范围的底部照明:

  • 添加点光源(Light > Point Light),把它移到立方体正下方,离底部稍微近一点
  • 调整Range(范围),确保光线只覆盖底部,别扩散太远
  • 同样可以用Culling Mask限制影响范围,再调强度和颜色到满意效果

方法四:自定义Shader精细控制

如果需要更灵活的效果,写个简单Shader就能搞定:

Shader "Custom/BottomLitCube" {
    Properties {
        _MainTex ("Texture", 2D) = "white" {}
        _BottomColor ("Bottom Light Color", Color) = (1,1,1,1)
        _BottomIntensity ("Bottom Light Intensity", Range(0, 5)) = 1.0
    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                float3 normal : NORMAL;
            };

            struct v2f {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
                float3 worldNormal : TEXCOORD1;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float4 _BottomColor;
            float _BottomIntensity;

            v2f vert (appdata v) {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.worldNormal = UnityObjectToWorldNormal(v.normal);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target {
                fixed4 col = tex2D(_MainTex, i.uv);
                // 检测法线是否指向下方(Y轴负方向)
                float bottomFactor = saturate(dot(i.worldNormal, float3(0, -1, 0)));
                col += _BottomColor * bottomFactor * _BottomIntensity;
                return col;
            }
            ENDCG
        }
    }
}
  • 把这段代码保存成.shader文件,创建材质并选择这个Shader
  • 赋值给立方体后,就能在材质面板调节底部发光的颜色和强度,完全由Shader控制,不用额外光源

内容的提问来源于stack exchange,提问作者Don_Huan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:47:54