Static Variable Not Assigning Half The Time?

I created a simple static variable on many of my objects to track how many are made. Sounds simple enough… but they don’t work outside the constructor! What am I missing here? The frustrating part is the code works for Corporation, but the EXACT SAME CODE doesn’t work in Mission.

Stripped down code

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Corporation : MonoBehaviour
	static public int corporationsMade=-1;
	public int corpID;

	public Corporation()
		corpID = ++Corporation.corporationsMade; //increment made count, then assign number

THAT ALL will “work” as long as it’s in that code block, in that the ID and the objectsMade are both increasing… however, when I create a corporation outside like so…

public class CorporationFactory : MonoBehaviour 
	public List<Corporation> corpMarket;
	Corporation GenerateCorporation ()
		Corporation newCorp = (Corporation) Instantiate(corpPrefab);		
		newCorp.transform.parent = CorporationFolder.transform;//child to CorpFolder
		newCorp.corpManager = corpManager;//give reference to corpmanager = string.Format("{0}:{1}", newCorp.corpID, newCorp.corpName);//name object after id:corpName
		return newCorp;

That doesnt work! The static variable is still increased, but the object’s ID is 0.

Found out the answer myself: Monobehaviors do not play nice with constructors… I just didn’t think it’s “partially” work like this. After I put the static variable increment in the awake function it worked fine.