Hey, thanks for the feedback! Scanner Sombre looks really cool, I'm definitely gonna check it out!
As for preloading, I was using a bodged method by having a parent enemy controller which has the enemies as its children. On ready, it paused all its children, and then when I needed to activate them, the enemy controller would unpause its children. I'm now realising that this probably pauses the child nodes before any of there init or ready functions are called, meaning that these all run when I activate them, causing the lag. Or maybe its something else. Either way I should definitely use a different method next time!
If I do pursue the project more, I would probably make 1 small and detailed level, and try to come up with some more interesting puzzles using the camera (as I felt I didn't really do that with this demo).
Thanks once again :)