Public static variable not updating from void Start ()?

I have 2 scripts: Score.cs and Scoring.cs. When the public static int iScore is updated in Scoring.cs during void Start (), the variable does not change in Score.cs, although it is fine during void Update ().

Score.cs:

  public class Score : MonoBehaviour
  {
          public Text textbox;
  
          void Start()
          {
                  textbox = GetComponent<Text>();
          }
  
          void Update()
          {
                  textbox.text = "Score: " + Scoring.iScore;
                  Debug.Log (Scoring.iScore);
          }
  }

Scoring.cs:

      public static int iScore;
      private bool bBelow;
      void Start () 
     {
          iScore = 0;
          Debug.Log ("Start" + iScore);
          bBelow = false;
          Vector3 Pos = Movement2.Position;
          this.transform.position = new Vector3 (Random.Range(-2, 2), this.transform.position.y);
     }
  
      void Update () 
     {
          float fPosition = gameObject.transform.position.y;
          Vector3 Pos = Movement2.Position;
          if (Pos.y < this.transform.position.y && bBelow == false)
          {
              iScore = iScore + 1;
              bBelow = true;
          }
          if (fPosition >= 6)
          {
              //Move back to starting position
              this.transform.position = new Vector3 (Random.Range(-2, 2), -6, 0);
              bBelow = false;
          }//end if
     }
 }

The Start method in each script will be executed in arbitrary order so it is likely WarmedxMints is correct - Scoring.Start() is running after Score.Start().
_
A good rule of thumb is to do internal setup in Awake (like a constructor) and anything with external interactions in Start. That way, for scripts that become active in the same frame, each scripts internal state has always been initialized.
_
Note: I advise against using Script Execution Order to solve sequencing issues. That creates an external dependency (script order) that is decoupled from the code itself. Static variables are also not advisable for the most part (that’s a whole different discussion).

This is due to script execution order. Score.cs’s Start is being called before Scoring.cs’s Start method. You can manually set the script execution order if it is vital the scoring is executed before score.