いんでぃーづ

ゲームいろいろ、いろいろ自由

Unity : C#のファイルが大きくなりすぎるのを防ぐには

開発を進めていくうちに、一つのファイルの行数が肥大化していくのは経験したことがあるとおもいます。   そんなときに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などのバージョン管理で、コンフリクトが起こりづらいというメリットもあります。  


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。