title: Unity C#, How script know when public variable(not property) changed
body: <p>For example of <code>UnityEngine.UI.Text</code></p>
  
  <p>It's contains <code>text</code> variable for set the value of text as string.</p>
  
  <p>Now, In my own class I use property(get;set) instead directly access the variable, This let me able to update views or fire some events when new value have set. The problem is when using property(get set) it'll not show this field in inspector and even in integration test tools.</p>
  
  <p>But Unity's text component decided not to use get set. Which in my opinion I feel not comfortable for deal with value changed.</p>
  
  <p>Question is how original <code>UnityEngine.UI.Text</code> in <code>text</code> variable can dealing with this?</p>
  
  <p>I think It not just <code>OnValidate()</code> because it can only work on editor. But <code>text</code> variable also work on runtime scripting.</p>
  
  <blockquote>
    <p>This function is called when the script is loaded or a value is
    changed in the inspector (Called in the editor only).
    <a href="https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnValidate.html" rel="nofollow">https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnValidate.html</a></p>
  </blockquote>