質問: unity でゲームを開発する際、スクリプトを分けすぎると変数を他のスクリプトから 読み込むことが多くなって面倒くさいのですが、スクリプトは何を基準にして 分けるべきでしょうか? またゲームマネージャーにはゲームのどの部分のスクリプトを書くべきでしょうか? スクリプトの、おすすめの整理の仕方があったら教えて頂きたいです。
回答: まず前提の話から。 Unityはコンポーネント志向なので原則は**「1役割1スクリプト」**です。 ここで言う役割とは「このオブジェクトが〇〇という振る舞いが出来るようにする」的な意味合いです。 標準のコンポーネントを見ると分かりますが、 例えばRigidbodyは「そのオブジェクトを物理的な物体にする役割」を与え、 〜Rendererは「そのオブジェクトをカメラに映る物体にする(要は「見えるようにする」)役割」を与えています。 ただ、分割するかどうか悩む要素もあると思います。 例えば「ユーザーの入力に合わせてキャラクターが動く」という処理があった時、 上下前後の移動とジャンプを同じスクリプトに入れるのか、別スクリプトに分けるのか。 コンポーネント論的な意味で分割出来るかの判断は**「AはするがBはしないオブジェクトを作る時、コンポーネントの付け外しだけでそれが実現出来るか」**という尺度にすると分かりやすいと思います。 とは言え分離させると逆にやりづらいということもあると思います。 なので結論としてはぶっちゃけ**「実装と運用が楽な方」**かなぁと。 出来るだけ実装や修正や変更が容易になるように、かつ長過ぎず短過ぎないコードを考えるのが**「設計」**なので、そこは要件や仕様に合わせて上手いこと考えましょう。 この辺は「疎結合」とか「カプセル化」などオブジェクト志向・コンポーネント志向系の理念を学ぶと分かると思うので調べてみてください。 ゲームマネージャーもそういう特別な仕組みがある訳じゃないので、好きにやってください。 「みんなが参照したい情報は1つのスクリプトに集約させておけば、そこだけを見に行けばいいから楽だよね」「1つのオブジェクトが他オブジェクトの管理をしておけば、他オブジェクト同士はお互いを気にしないでいいから楽だよね」ということでしかないです。