>> >> >> Reference << << << <<<<<<Ref>>>>>>
>> >> >> Indexer << << << <<<<<<Idx>>>>>>
Matched: 0

Tags

    Categories

      Types

        Top Results

          Light
          M: 2025-05-29 - ljf12825

          Unity中的Light是照亮场景和物体的核心组件,也是实现逼真视觉效果的关键之一。合理使用光源可以极大提升游戏画面质量,同时也对性能有重要影响 Light决定了场景中物体如何被照亮、阴影如何生成、氛围如何表现

          Light的类型(Type)

          Unity中有4种主要光源类型:

          类型描述用途示例
          Directional Light没有位置,只有方向,光线平行太阳光、月光
          Point Light从一点向所有方向发散灯泡、火把
          Spot Light从一点向特定方向的锥体发散手电筒、聚光灯
          Area Light(仅用于烘焙)从一个平面区域发光霓虹灯、窗户光线(仅用于静态对象)

          光照模式(Mode)

          Unity光源有三种模式,关系到实时性和性能:

          模式描述用途
          Realtime每帧计算光照,支持动态物体动态灯光,如手电筒、角色法术
          Mixed静态对象使用烘焙,动态对象使用实时光综合表现和性能
          Baked所有光照预先烘焙,不支持动态阴影静态场景,如建筑、地形

          Light属性

          在Unity中,使用UnityEngine.Light类可以动态修改光源的各种属性,实现如灯光变化、闪烁、开关、颜色变化等效果

          Light light = GetComponent<Light>();
          

          namespace:UnityEngine
          Behaviour -> Component -> Object

          常用字段与属性

          属性/方法类型说明
          typeLightType光源类型(Directional, Point, Spot, Area
          colorColor光的颜色
          intensityfloat光照强度
          rangefloat光照范围(Point/Spot)
          spotAnglefloat聚光灯角度(Spot)
          enabledbool是否启用光源
          shadowsLightShadows阴影类型(None/Hard/Soft)
          cookieTexture光照投影纹理
          cookieSizefloatCookie 范围(仅限 Directional Light)
          renderModeLightRenderMode自动/强制重要/强制非重要
          bounceIntensityfloat间接光强度(GI 反射)
          flareLensFlare镜头光晕组件
          cullingMaskLayerMask此灯光影响的层(需要启用“Forward Rendering”)

          Unit官方文档(Light)

          示例:动态控制灯光

          1.开关灯

          void ToggleLight()
          {
              Light light = GetComponent<Light>();
              light.enabled = !light.enabled;
          }
          

          2.改变颜色和强度

          void SetAlertMode()
          {
              Light light = GetCompenent<Light>();
              light.color = Color.red;
              light.instensity = 5f;
          }
          

          3.手电筒控制

          public Light flashlight;
          
          void Update() => if(Input.GetKeyDown(KeyCode.F)) flashlight.enable = !flashlight.enable;
          

          枚举类型

          LightType

          LightType.Directional
          LightType.Point
          LightType.Spot
          LightType.Area
          

          LightShadows

          LightShadows.None
          LightShadows.Hard
          LightShadows.Soft
          

          LightRenderMode

          LightRenderMode.Auto
          LightRenderMode.ForcePixel
          LightRenderMode.ForceVertex
          

          动态创建光源

          GameObject lightObj = new GameObject("My Light");
          Light light = lightObj.AddComponent<Light>();
          light.type = LightType.Point;
          light.color = Color.yellow;
          light.range = 10;
          light.intensity = 2;
          

          阴影(Shadows)

          1.Type(类型)

          • Hard Shadows: 边缘锐利,性能好
          • SoftShadows: 边缘柔和,更真实,但性能稍低

          2.Strength(强度) 控制阴影颜色的不透明度

          3.Bias / Normal Bias 用于消除“Peter Panning”(阴影漂浮)或自阴影伪影的问题

          环境光

          全局光照设置不依赖于某个 Light,而是在场景中作为基础光存在:

          • 打开方式:Window > Rendering > Lighting > Environment

          • 设置:

            • Ambient Source:Color / Gradient / Skybox

            • Ambient Intensity:环境光强度

          • 可搭配天空盒(Skybox)提升视觉氛围

          高级功能

          1.Light Cookies(光照贴图) 使用一张纹理控制光照形状,常用于:

          • 手电筒
          • 模拟窗户栅栏照进屋内的光影
          • 火焰跳动的效果
          light.cookie = yourTexture;
          

          2.体积光 Unity标准版本不自带,可通过插件实现(如HDRP或Volumetric Lighting插件)实现光柱、薄雾等效果

          光照的重要系统

          1.Light Probes

          • 用于让动态对象接收静态光照烘培信息
          • 适用于混合模式

          2.Reflection Probes

          • 用于模拟镜面反射或高光反射效果
          • 反射球贴图可影响PBR材质

          3.Global Illumination(全局光照)

          • 计算间接光(比如光从墙上反射到地面)
          • 分为实时GI和烘焙GI(通过Enlighten或Progressive)

          光照调试技巧

          • 使用Scene视图右上角的Lighting工具查看光照影响
          • 使用Light Explore(Window > Rendering > Lighting > Light Explorer)快速管理所有光源
          • 使用Gizmos选项查看光源范围

          性能建议

          1.实时光数量尽量控制在2~4个
          2.阴影数量建议仅关键光源开启阴影
          3.静态光使用Baked,可大幅提升帧率
          4.动态光照使用Light Probe + Mixed模式