If there's still problems after doing all that.....
Are there too many live objects? Might need a dynamic culling system on top of Unity's default.
Overall output "Quality" settings in Unity can be tried, but the goal is to get target frame rate at close to "Fantastic" quality, which is totally possible ****** might still want to disable antialiasing (get jagged edges) and anisotropic filtering (textures perpendicular to camera with blur at closer distances ... psssh, big deal. )
FINALLY ... Start looking at script performance, and only through profiling. Find worst offenders of allocations. Raw execution time (instrumentation) is extremely rarely the problem. More often, lots of constant allocations kick off the garbage collector which robs performance.
IF for same insane and unlikely reason there is a method that just "takes too long" to execute, spend zero time speeding it up, and instead take that method out of critical path, either by putting it startup or on background thread.