Yes this looks like it will work for me. However I have one question, I need both the color and location of each light (so that I can calculate angle between light and surface). So I need two arrays for storing these. Now my question is does Materials allow array params. I know I can use Vectors and Scalars, but what about an array of scalar or vector properties? If that is supported, then I am good to go.
If that is not possible, then I think I will have to go with a float4x4 matrix and take only the nearest 4 lights (which might work). I can make a float4x4 as param in HLSL, so I assume this work for Unreal. right?