LoginSignup
5
4

More than 5 years have passed since last update.

Prefab EvolutionのReadMeの和訳

Last updated at Posted at 2017-10-27

Prefab Evolution

Unityのアセット、Prefab evolutionのrerad meを適当に和訳

プレハブをネスト・継承できるようにするためには、シーンでそのプレハブを選んで「Allow this to be nested」を押すだけです。

image.png

これでこのプレハブはほかのプレハブにネストできます。ヒエラルキーウィンドウの緑のキューブのアイコンは、インスペクターウィンドウにある「Apply」ボタンをクリックしたときに、このプレハブに適用された全ての変更がこのプレハブにネストされた全てのインスタンスに伝播することを表します。

image.png

ヒエラルキーの緑のキューブ、またはインスペクターウィンドウのMenuボタンを押すことでメニューを表示できます。

image.png

現在のプレハブから継承するプラハブを作るには「Create Child」を押してください。このプレハブはプロジェクトに「_Child」と付いて現れ、シーンにもインスタンスが生成されます。

image.png

「Child」プレハブはネストプレハブのようなもので、親プレハブに適用されたすべての変更を受け継ぎます。「Child」プレハブには親の名前のボタンが付いていて、クリックすると親のプレハブがプロジェクトウィンドウでハイライトされます。
それでは、「New Prefab」という新しいゲームオブジェクトを置いてインスペクターまたはプレハブメニューにある「Apply」ボタンをクリックしてください。

image.png

ノーマルプレハブを作って、「New Plafab_Clild」をその中に置き、「Apply」ボタンをクリックしてください。

image.png

黄色のキューブはネストプレハブであることを表していて、このインスタンスに適用された変更は「New Prefab_Child」のほかのインスタンスに影響を及ぼさず、上書きされます。ネストされたインスタンスや子のプレハブは自由に変更できます。例えば、ゲームオブジェクトやコンポーネントを作ったり削除したり、またはどんなオブジェクトを内包するプレハブでもTransformを変更できます。「New Prefab_Child」インスタンスの中に新たに「Proxy」ゲームオブジェクトを子として置いてください。

image.png

次に、「New Prefab」内の「GameObject」をの名前を「Child」に変更して、「New Prefab」の変更を適用してください。「Gameobject」の全てのインスタンスの名前が「Child」に変わります。このように、「Proxy」ゲームオブジェクトは今でも「New Prefab_Child」のインスタンス内の中にあり、「Child」は今でも「Proxy」ゲームオブジェクトの子です。

image.png

次に、新しいゲームオブジェクトを「New Prefab_Child」の「Child」ゲームオブジェクトに置いて、「New Prafab_Child」にApplyしてください。このゲームオブジェクトは「New Prefab_Child」にネストされたインスタンスにも表れます。しかし「New Prefab」には表れないことがわかります。これは、「New Prefab_Child」は「New Prefab」を継承しており、親オブジェクトの変更は適用されないからです。また、ネストされたプレハブのインスタンスはそのインスタンスのプレハブに変更を適用することはできません。

image.png

「Compund Prefab」の中に「New Prefab」のインスタンスを置いて、「Compund Prefab」にApplyしてください。

image.png

次に、「New Prefab_Child」プレハブの「Child」ゲームオブジェクトの名前を「The Child」に変更して、「New Prefab_Child」プレハブに変更を適用してください。

image.png

するとインスペクターウィンドウで「New Prefab_Child」プレハブの子オブジェクトのnameプロパティが変更済みとしてマークされていることが確認できます。

image.png

次に、「New Prefab」プレハブの「Child」ゲームオブジェクトの名前を「A Child」に変更して「New Prefab」プレハブにApplyしてください。「New Prefab_Child」上のインスタンスではなく「Compund Prefab」内の「New Prefab」のネストされたインスタンスのみに変更が適用されていることがわかります。

image.png

Default、Keep、Ignoreの3つのプロパティ上書きモードがあります。Defaultモードは親プレハブでこのプロパティを同じ値に変更したら上書きされたプロパティがプレハブの値にリセットされます。例えば、「New Prefab」の「A Child」ゲームオブジェクトの名前を「The Child」に変更すると「New Prefab_Child」はこのプロパティを将来的に書き換えず、もし親プレハブがそれを変更したらこのプロパティに変更を適用します。「A Prefab」の名前を「The Prefab」に変更して,「New Prefab」にApplyしましょう。

image.png

そして名前を「Child」に変更して「New Prefab」にApplyしてください。

image.png

「New Prefab_Child」は名前プロパティの書き換えられず名前も変更されません。Keepモードはプロパティの上書きが必ず適用されます。しかし、親プレハブの変更を適用するとIgnoreモードのプロパティは必ず親プレハブから継承します。
プレハブメニューからプレハブがどのプレハブに依存しているかを確認することができます。

image.png

ネストされたプレハブのインスタンスは、その親プレハブが変更されたときに変更が伝播しないように無効化することができます。

image.png image.png

インポートされたモデル
インポートされたモデルはネストされたプレハブと同じ振る舞いをします。これにより、他のプレハブにネストさせたり継承させることができます。全てのインスタンスを再インポートした後,モデルはアップデートされます。これにはひとつ制限があります。モデルの全てのボーンが異なる名前でなければなりません。これは、ヒエラルキーの変更を判断する唯一の方法であるからです。
また、この特性を無効化することもできます。(Unity → Preferences → Prefab Evolution)

ソースコードバージョンへの移行
同梱のソースコードなしでこのプラグインを使っていた場合、プレハブEvolve Prefabスクリプトを使っているプレハブを全て変換する必要があります。Unity Editorの Unity → Preferences → Prefab Evolution を開きMigrateをクリックします。この操作でdllからインポートされたEvolvePrefabスクリプトからEvolvePrefab.csのスクリプトへのすべての参照を置き換えます。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4