When starting a new project, Unity will create a directional light in the scene.

Default_Directional_Light

Directional Light has no shape, the only thing that can be changed is the direction in which the light shines. This can work like the sun.

By using a cookie with Directional Lighting, you can create an effect like Batman's signal.

Point light emits light in all directions and is tied to range on how far it will shine. Light is the brightest in the center and diminishes as it reaches its range.

A spotlight is similar to the directional light, but it does have a very specific shape. These can be used in scenarios like a flashlight or shine on the player character itself.

Lastly, we have an area light. The Area light is rectangular in shape and is a Baked Only Light.

Unity will autogenerate our light maps at runtime. By using a directional light and setting it as the Sun Source for the Scene, you can then turn off the directional light and it will not project light on objects in the scene, but can still be used for the Skybox.

Complementary colors should be thought of while lighting.

Per Pixel lighting is going to shade an object at every single pixel. This can be set under the Quality settings. Pixel lights are going to give you a higher resolution lighting effect.

Vertex lighting, the light information is going to assign itself to the vertex of an object and then assign a different color value to another vertex of an object. Vertex lights are going to give you a lower resolution which can be useful in mobile games.

Lights that are important are pixel lights. Lights that are unimportant or not important are vertex lights. This can be changed in the Render Mode of the Lights.

Normal maps do not get used on not important lights which can make things look flat. Light Baking Techniques can be used to optimize our scenes. Light Baking is a process that bakes the lighting information in a light map that is applied to the environment as a whole.

Real time is the most expensive light mode that you can use. Real time is constantly checking if an object is casting a shadow, if it should be lighting another object at a per pixel level, and it is waiting to be turned on and off and to be interacted with constantly through script and all of that can give you a little bit of a performance hit, especially if you have hundreds of lights in your scene and they're all real time.

For Light Baking, your objects have to be static. The lights that are set to baked, they are casting their light and each point of ray that comes out of the light touches a surface and then it's going to bounce one time based on the indirect multiplier. When it bounces, it's transferring color data to another object. This is where we can start to get some really nice shadows (Shadow type in the light object) and we can start to see things like ambient occlusion and the indirect lighting itself.

Mixed Lighting mixes backed lights and dynamic lights.