Fans finally got a look at the Jets’ offense underneath the lights at MetLife Stadium. And it wasn’t always pretty.

Saturday night’s Green and White scrimmage was as close to simulated game action as the Jets have seen to this point in training camp, and the evening proved there are plenty of kinks to be ironed out.

All three quarterbacks, Josh McCown, Christian Hackenberg and Bryce Petty, scuffled early. But as the evening wore on, each seemed to settle into a rhythm against the Jets’ defense.

There were 13 drives in all, and the unit scored three touchdowns and two field goals and coughed up a pick-6 — to a rookie safety, no less.

Two of those TDs came courtesy of McCown (8-for-13 for 114 yards), who connected with Chris Harper on a 55-yard score (aided when cornerback Buster Skrine fell down in coverage) and a 5-yard TD pass to tight end Austin Seferian-Jenkins. But McCown committed the lone turnover of the night, getting picked off by second-round pick Marcus Maye, who ran the ball back about 60 yards for the defensive score.

Hackenberg (3-for-5, 45 yards) showed veteran poise on the Jets’ other touchdown, evading pressure and stepping into a 25-yard touchdown pass to rookie tight end Jordan Leggett. But Hackenberg also was “sacked” three times.

advertisement | advertise on newsday

Petty (4-for-12, 45 yards) led two drives that resulted in field goals. During one of his four possessions, he had a first-and-goal at the 4, but he and the offense were stifled.

“There was some good give- and-take,” coach Todd Bowles said of the offense’s performance. “Like the fact that they made plays, don’t like the fact that they had one turnover.”

Asked about his costly error, McCown joked: “Marcus just made a big play. You classify it as a pick-6. But since we’re not taking people to the ground and we have red jerseys on . . . ”

Does that mean he would have made the tackle on the youngster? “Yeah, absolutely,” the 38-year-old said, smiling. “So lucky [for] them I had a red jersey.”

Complicating matters for the offense was the absence of receiver Quincy Enunwa, who suffered a non-contact neck injury during a 7-on-7 drill before the scrimmage.

Aside from the Enunwa scare, there were some bright spots for the offense and momentum to build on.

“Some good, some bad,” said McCown, who was “sacked” twice during his five possessions. “We had some bright moments where we moved the ball. We had a big play there on the long touchdown and some good runs . . . As a competitor, you feel like it could be better, so we’ll look at that tape and find ways to improve.”

Said Hackenberg: “I thought it went well . . . I thought we were able to bounce back and do some good things toward the end there. I think the overall competition level was great tonight.”

Notes & quotes: A day after claiming receiver Bruce Ellington off waivers, the Jets waived the former 49er with a “failed physical” designation and signed fullback Algernon Brown . . . On the first play of team drills, 10-year-old Jesse Pallas of Miller Place joined the offense on the field and scored on a 50-yard touchdown run — bypassing falling defenders in the process. Pallas was diagnosed with acute lymphoblastic leukemia in 2011 and suffered a relapse three years later in his central nervous system. He went into remission in the spring of 2016 but continues to suffer brain swelling and bone loss. The Jets, who were made aware of Pallas’ condition through the Marty Lyons Foundation, gave the boy and his family four tickets to their home opener Sept. 24 against the Miami Dolphins.