開発を進めていくうちに、一つのファイルの行数が肥大化していくのは経験したことがあるとおもいます。 そんなときにC#でクラスを複数ファイルに分割して記述する方法があります。
partialクラス
クラスの宣言にpartialをつけると、一つのクラスを複数のファイルにまたがって記述することができます。
まず、もとのファイルのクラス定義にpartial識別子を追加します。
・Player.cs
public partial class Player : MonoBehaviour {
これでPlayerクラスを複数ファイルに分散させる準備ができました。
同じディレクトリに”Player_Walk.cs” などの、別なファイル名でファイルを作成します。
・Player_Walk.cs
public partial class Player { }
MonoBehaviourの継承関係は書かなくても大丈夫です。
分割ファイルはいくらでも増やすことができます。 classだけでなく、structやinterfaceにも使うことができますよ。
partialメソッド
メソッド宣言にpartial句をつければ、実装のみを別ファイルに切り出すことができます。 ただしpartialメソッド化するには、
- void型である
- 引数にoutパラメータを使用できない
- 必ずprivateメソッドになる
などの制約があります。
public partial class Player : MonoBehaviour { partial void PartialMethod(ref string refString); }
public partial class Player { partial void PartialMethod(ref string refString) { // 処理 } }
internal修飾子…は使えません
C#にはinternalという修飾子もあります。クラスや変数が同じバイナリからしか参照できなくなるという効果があります。 が、残念ながらUnity環境では、使用できるケースはほとんどなさそうです。 これはUnityが、ユーザが記述したスクリプトを Assembly-UnityScript.dll というバイナリにまとめてしまうからかと思われます。
大きくなりすぎる前にファイル分割を
分割しておけば、gitなどのバージョン管理で、コンフリクトが起こりづらいというメリットもあります。