1

私は現在、技術設計文書を作成したい演習に取り組んでいます。

したがって、架空のプロジェクトに伴う一連の問題に対する可能な解決策を評価する必要があります。

演習の概要は次のとおりです。

ゲームのアートとコア ゲーム デザインは非常に厳しく分割されています。基本的に、コア システム、ゲーム メカニクス、およびデザインは非常に抽象的に作成されており、非常に幅広いアート設定で動作できるようになっています。また、制限の 1 つは、できるだけ多くのアセット、レベル、およびデザインを再利用することです。

今私の質問に:

レベル デザイナーに、「テンプレート」オブジェクト (必要なすべての技術的機能、つまりアタッチメント用のスロット、正しいスケール、テクスチャなどを備えたオブジェクト) を使用してレベルを作成し、後でこれらのオブジェクトをアウトソーサーから受け取った一連のアセットに置き換えてもらいたい.

新しいアセットのセットを取得するたびにすべてのオブジェクトを手動で置き換えたくないので、これが私がやりたかったことです:

各テンプレート オブジェクトには説明的なラベルが付けられ、アウトソーサーによって配信される各アセットには、それに対応する対応するテンプレート カウンターパートとまったく同じラベル名が必要です (たとえば、カスタム属性、チャネル、または単にその名前で)。 )。

スクリプトを使用して、すべてのテンプレートを関連するアセットに置き換えたいと考えています。

これは、アセットのセットごとに行われます。また、セットごとに 1 つずつ、エンジンの複数のデプロイを保持しますが、最初はすべて、置き換えが必要なテンプレートから開始します (視覚的にもゲームからも、各設定にいくつかの変更が必要になるため)設計の観点から、すべてのアセットを 1 つのトランク/プロジェクトに保持することは、私には意味がありませんでした)。

これを簡単にするために、ある種の「データベース」を使用します (おそらく、エンジン スクリプトが照会でき、新しいアセットの配信時に別のスクリプトによって事前に入力される単純な辞書ですか?)。

私の質問は: これは可能ですか? はいの場合、プログラマーの観点からこれはどのくらい難しいでしょうか? 私はこの分野で限られた知識しか持っていないので、これについてあなたの若者や女性の意見を聞きたいです.

また(非常に重要)、資産のこの「交換可能性」を達成するためのより良い方法を知っていますか? それとも、やりたいことを達成するための簡単な方法がありますか? フィードバックをお待ちしております。ありがとうございました!

クイック編集: これは 3D オブジェクトだけに適用されるわけではありません。明らかに、テクスチャも置き換える必要があります

4

1 に答える 1

3

Prefabsを探していると思います。

基本的に、プレハブは一種のプロトタイプ パターンを実装します。シーンの階層に直接 a を入れる代わりに、それを a にして、そのインスタンスであるa をシーンに入れるGameObjectことができます。prefabGameObjectprefab

GameObjectシーンにリンクされprefabprefabが変更されると、リンクされたオブジェクトも変更されます。同じ のインスタンスが複数ある場合はprefab、すべてのインスタンスも更新されます。

この機能の唯一の大きな制限は、ネストされたプレハブがサポートされていないことです。

レベル デザイナーに、「テンプレート」オブジェクト (必要なすべての技術的機能、つまりアタッチメント用のスロット、正しいスケール、テクスチャなどを備えたオブジェクト) を使用してレベルを作成し、後でこれらのオブジェクトをアウトソーサーから受け取った一連のアセットに置き換えてもらいたい.

これは典型的な使用例です。アーティストが提供するモデルによって置き換えられるシーン (キューブなど) へのプレースホルダーがあります。シーンに 100 個の立方体をインスタンス化する場合、それらを置き換える必要がある場合は、すべてのオブジェクトに対して手動で行います。

代わりにprefab(ModelPrefab と呼びましょう) を作成し、シーンへの立方体がそのプレハブのインスタンスである場合、新しい 3D モデルを取得すると、単純に を更新でき、prefabリンクされたすべてのインスタンスも更新されます。

私の質問は: これは可能ですか? はいの場合、プログラマーの観点からこれはどのくらい難しいでしょうか?

ネストされたプレハブなしで作業できる場合は、何もする必要はありません。既に実装されています。を実装する必要がある場合nested prefabs、それほど簡単ではないかもしれません。

クイック編集: これは 3D オブジェクトだけに適用されるわけではありません。明らかに、テクスチャも置き換える必要があります

GameObjectモデルを使用して上記の例を作成しましたが、実際にはコンポーネントのコレクションであるそれぞれからプレハブを作成できます (興味がある場合は、コンポーネント ベースのオブジェクト管理をご覧ください)。


編集

はい、スクリプトを使用してプレハブを更新することは可能です。必要な関数は UnityEditor 名前空間にあるため、エディター拡張機能を介して使用する必要があります。必要なものはすべてPrefabUtilityクラスにあります。

于 2013-04-20T11:43:25.937 に答える