
こんな風にスライスされたスプライト(enemy_0〜enemy_8)を動的に変更する方法を紹介します。
■まずはSpriteの取得
Spriteを名前指定で取得するには以下のように記述します。
  // スプライトの取得
  // @param fileName ファイル名
  // @param spriteName スプライト名
  public Sprite GetSprite(string fileName, string spriteName) {
    Sprite[] sprites = Resources.LoadAll<Sprite>(fileName);
    return System.Array.Find<Sprite>(sprites, (sprite) => sprite.name.Equals(spriteName));
  }
この関数には第1引数にファイル名を指定し、第2引数にスプライト名を指定します。今回のプロジェクトであれば、
- ファイル名(fileName):"Sprites/all"
 - スプライト名(spriteName):"enemy_0" 〜 "enemy_8"
となります。 
なお、 スプライトは「Resources」フォルダの下に配置 する必要があります。そうしないとResources.LoadAll()で参照することができません。
■Spriteの変更
Spriteの変更は以下のように記述します。
  // "enemy_0" 〜 "enemy_8" の文字列をランダムで生成
  string name = "enemy_" + Random.Range(0, 8);
  // Spriteを取得
  Sprite sp = GetSprite("Sprites/all", name);
  // SpriteRendererを取得する
  SpriteRenderer sr = GetComponent<SpriteRenderer>();
  // Spriteを変更する
  sr.sprite = sp;
先ほどの関数でSpriteを取得し、GetComponent()で取得したSpriteRendererのプロパティの"sprite"にSpriteを代入することでスプライトを差し替えることができます。
■Single Spriteの場合
Single Spriteの場合は、Resources.Load() でそのままスプライトを取得できます。
Sprite sp = Resources.Load<Sprite>(fileName);
■参考
- [Unity]ResourcesからスライスしたSpriteを取得する3つの方法
 - http://tsubakit1.hateblo.jp/entry/20131222/1387654182