title: Is there a way to have a script reference an object as a field?
body: <p>I've had trouble searching around and may be critically misunderstanding how Unity wants you to structure your project, but here is my situation:</p>
  <p>I have characters in my game and would like to configure them in the editor. I have made classes that represent different behavior types and actions that can be performed. <strong>Is there a way for me to make a field on a script typed for these classes so that I can drag and drop using the inspector to configure different prefabs?</strong></p>
  <p>Here is some code demonstrating the situation:</p>
  <p>Unit.cs</p>
  <pre class="lang-cs prettyprint-override"><code>// A unit on the board.
  public class Unit : MonoBehaviour
  {
      public UnitAction action;
  }
  </code></pre>
  <p>UnitAction.cs</p>
  <pre class="lang-cs prettyprint-override"><code>// A unit on the board.
  public class UnitAction : MonoBehaviour
  {
      // Does things
  }
  </code></pre>
  <p>These fields show up in the inspector once this script is applied to a prefab, but there are no options to populate the default field value. If I make the field type <code>UnityEngine.Object</code>, I can put the scripts there, but that seems like something I do not want.</p>