Visual Editorを最小限/使用せずにUnityでゲームをビルドするにはどうすればよいですか?


24

完全にC#でゲームを作成したいと思います。エンジンを検索したところ、Unity3Dが見つかりましたが、チュートリアルとドキュメントはすべて、ビジュアルエディターと、クリックしてポイントしてシーンやスクリプトを作成するUnity IDEについて説明しています。

私はそれをしたくありません。デザイナーが私から離れて物事を抽象化するよりも、完全なコードカバレッジを好む。純粋なC#コードをゼロから作成するか、必要に応じてUnityスクリプトを追加としてのみ作成したいと思います。そうすることについての説明や文書が見つかりませんでした。Unityを使用してビジュアルエディターを最小限(またはまったく)使用せずにゲームを構築するにはどうすればよいですか?


1
最後に、Unityについての質問を装ったフレームワークの推奨事項です。
BlueRaja-ダニーPflughoeft

2
コミュニティの賛成票を覆すことはありませんが、実際に同意するかどうかはわかりません。ただし、この質問は、Unityのいくつかの機能、つまり削除される可能性のある対処されない回答について具体的に尋ねていることに注意してください。必要がないのであれば、これをトピック外の質問に変えないようにしましょう。
ジョシュ14

2
ほとんどの開発者は、ビジュアルエディターを使用してレベルを設計します。これは、コード内の小さなdoodadの位置を設定するよりも視覚的に配置する方がはるかに簡単だからです。GUIレイアウトの編集/設計についても同様です。このようなものがすでに組み込まれていることは、私見にとって大きなメリットです。
bummzack 14

4
I prefer writing my own level editor which provides only the stuff really neccessary for my game基本的に、ゲームエンジンを使用するのではなく、グラフィックライブラリを使用してプログラミングすることを意味します。しかし、あなたはそれをしようとするときにすでに技術的な障害にぶつかったので、ここで矛盾を感じます。
ジョーク14

3
@jhockingそれでは、ゲームエンジンの定義は非常に異なっているようです。クラスライブラリは、カメラの数学、サウンドシステム、物理学などの典型的なゲームタスクを抽象化する場合、ゲームエンジンですが、デザイナーは必須ではなく、私の意見では必須ではありません。
レイ

回答:


27

私はUnityの完全な初心者ですが、これが現時点でのやり方であり、エディターの使用を最小限に抑えます:

エディターには、「main」という空のGameObject、カメラ、ライトの3つのオブジェクトしかありません。これは、これまでのところ、単一のカメラと単一のライトのみで作業しているためです。後で私はおそらくそれらを削除し、「メイン」のみが残ります。

「Assets / MyScripts」には、「Main」というクラスがあり、これはビヘイビアーとして「メイン」GameObjectに追加されます。つまり、プログラムが起動すると、インスタンス化された「メイン」クラスとそのメソッドが呼び出されます。「メイン」クラスは次のとおりです。

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

ゲームでは、次のような環境を動的に構築します。

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

しかし、これはこれまでのところ私がプロトタイプを作っているだけだからです。後でキューブをBlenderで編集したいくつかの素敵なものに置き換えたいと思います。Blenderで作成し、「プレハブ」としてUnitsにインポートする必要があります。次に、C#コードから「プレハブ」を同様にインスタンス化します。

オブジェクトを他のオブジェクトとの衝突などのイベントに反応させたい場合、オブジェクトをインスタンス化し、MonoBehaviorから派生したC#クラスである動作クラスに動的に追加できます。たとえば、車を持ちたい場合は、車のプレハブを作成し、ゲーム内でのその動作について「CarBehavior」クラスを記述します。

この方法により、エディターとの相互作用を最小限に抑えることができますが、おそらく完全にゼロにはなりません。これは、これがあなたにとって許容できる解決策であるかどうかに依存します。


2
これは、Unity初心者にとっては非常に明確で堅実な回答のように見えると思います:)
レイ14

ありがとう!それ以外の場合は経験豊富なプログラマーですが、Unityでの私の最初のプロジェクトであり、まだ完成にはほど遠い状態です。プレハブはまだ使用していません。私が現在気づいていないいくつかの合併症があるかもしれないので、私は塩の粒で私のアドバイスを取ることをお勧めします。ちなみに、Unityでのシリアル化は少し直感に反しているように感じます。私はそれをより深く研究しなければなりません、そしてそれはいくつかの設計決定に影響を与えるかもしれません。
ヴィリアムBúr14年

9

Unityを使用する場合、Unityのエディター内でいくつかの作業を行う必要があります。それがUnityの仕組みです。

しかし、膨大なあなたがプログラマとしてやっていると思います何の大半は、ユニティのエディタ内で発生しません。スクリプトファイルは外部IDEで記述された外部テキストファイルであり、プログラマーはUnityのエディターのみを使用して、実行するスクリプトをリンクし、Playを押して実際にゲームを実行します。これは、プロジェクト設定のクラスでリンクしてから、IDE内で[実行]をクリックするのと同じです。

中央のビジュアルエディターを備えた他のほとんどのゲーム開発ツールにも、限定的で柔軟性のないスクリプトサポートが備わっていますが、Unityにはそのような不利益はありません。Unity用に作成されたものはすべてビジュアルエディターを経由しますが、このコアインターフェイスには、Unityのゲームエンジンで実行されるカスタムコードへのプロジェクトのリンクが多数含まれます。経験豊富なプログラマーは、この開発環境を却下しないでください。プログラミング機能が限られている、一緒にクリックするゲームクリエーターと勘違いしてください。

(また、現在執筆中の本は、経験豊富なプログラマーを対象としているため、あなたにとって素晴らしいリソースになると思われます)


1
私はこの答えに出くわしたとき、あなたの本を読んでの真ん中にあった
最大pleaner

6

あなたが探しているのは、UnityのFutile Frameworkです。

基本的には、スクリプトを使用してすべてのプログラミングを行うことができます。ビジュアルエディターを「ドラッグアンドドロップ」する必要はほとんどありません。必要なのは、ゲーム全体のコンテナとなるシーン内の単一のGameObjectです。次に、非ビジュアルエディターを使用する場合と同様に、すべてを手続き的に実行します。

免責事項:Futileは非常にコード中心ですが、何らかの方法でUnityエディターをいじる必要があることは避けられません。しかし、これはFutileによって大幅に削減されます。


2

ここですべての良い答え、特に@jhockingの答えに追加したいと思います:

私がUnityで見つけたほとんどすべてのものには、プロジェクトフォルダツリーに対応するプレーンテキストがあります。Unityを開かずにプレハブや他のgameObjectを直接編集しましたが、これらの変更はコミット時に他の開発者によって正常に検出されました。

今日まで私はFutileフレームワークについてあまり知りませんでしたが、すべてを取得するための本当に素晴らしい方法であるように見えます。

現在、スクリプトベースではなく、すべてのドラッグアンドドロップを使用していますが、目標は手続き的に生成されたレベルと悪者なので、変更する必要があります。

私の2セントは、基本的にUnityで必要ないくつかのオブジェクトを取得し、外部エディターのスクリプトに依存するということです。ほとんどすべてをプレーンテキストで実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.