Smart Lepplerは、壊れたプレハブリンクを復元するのに役立つUnityプラグインです。それに加えて、シーン内のプレハブを、変更やオブジェクトの参照を失うことなく同じスクリプトを含む同様のプレハブに置き換えることもできます。
プラグインを使用するには、プロジェクトに設定する必要があります。それ以外の場合は、コンパイルされません。 .NETバージョンを次のように変更できます: File -> Build settings -> Other settings -> Configuration -> Scripting Runtime Version -> .NET 4.x Equivalent
パッケージをダウンロードしてインストールした後、 Tools -> Replace prefab... ...。
次の例は、プラグインの主なユースケースを示しています。 YouTubeには、プラグインをより鮮明に説明するビデオもあります。

シーンオブジェクトのrestore a prefab linkために、最初にシーンオブジェクトをウィンドウの対応するフィールドにドラッグします。次に、Unityプロジェクトウィンドウに元のプレハブを見つけて、 fresh prefabフィールドにドロップします。
Transfer component valuesの下で、保存する変更がある可能性のあるすべてのコンポーネントを選択できます。 transform値を除き、Unityコンポーネントの設定は現在サポートされていません。
これらの設定が行われた後、 Replaceをヒットすると、シーンのオブジェクトに加えた変更を失うことなくプレハブリンクが復元されます。
多くの場合、ゲーム開発では、ゲームElememtの特定の機能をテストするためにダミープレハブが作成されます。ゲーム開発の後期段階では、このボタンのより良いバージョンが作成されます - きれいなモデル、テクスチャ、シェーダーなどがあります。
したがって、ダミープレハブのみを備えたレベルがある場合、それらすべてを新しいより良いバージョンに置き換えたい場合は、Smart.Replaceが役立ちます。
以下の画像の例は、ボタンとドアのあるシーンを示しています。ボタンには、ドアオブジェクトへの参照が含まれるButton Clickというスクリプトがあるため、クリックするとドアを開閉できます。

また、プロジェクトビューで確認できる別のボタンプレハブもあります。 Button 1と呼ばれます。少し違って見えますが、 ButtonClickコンポーネントも含まれているため、現在のボタンのように使用できます。これは交換の適切な候補であるため、最初にシーンオブジェクトをsmart.replaceウィンドウにドロップし、次により良いボタンプレハブをドロップし、交換後にドアの参照が維持され、次にreplaceします。

ボタンは正常に交換され、ドアへの参照があるため、まだ機能します!
このように、 integer 、 colors 、 stringsなど、交換中にすべてのコンポーネントのすべての設定を維持できます。
Smart.replaceはコンポーネントの交点のみを気にするため、 Fresh prefabにはscene objectと同じオブジェクト階層を持つ必要はありません(詳細については、制限を参照)。
今ドアを交換してみませんか?ドアがボタンで参照されていないので、これは少し難しいようです。ただし、Smart.replaceは、オプションを有効にすると、 Transfer external referencesできます。
プロセスは再び同じです。最初にシーンオブジェクトを選択し、次にプレハブを選択します。繰り返しますが、交換をヒットすると、ドアが別のプレハブに置き換えられます。同時に、ドアへのボタンの参照が更新されます。
Smart.Replaceは、交換されるオブジェクトへの外部objectとcomponent参照を検索します。可能な参照のためにlistsやarraysを検索し、説明のように更新します。
交換したいシーンに同様のオブジェクトが変異している場合は、1つずつ行うのは退屈です。
Smart.Replaceは同様のオブジェクトの検索を提供するため、一度に任意の数のオブジェクトを置き換えることができます。最初に、シーン内のオブジェクトのいずれかを選択し、次にプレハブを選択します。これにより、同様のオブジェクトを検索できます。デフォルトではフィルターがないため、シーン内のすべてのオブジェクトが表示されます。すべてのオブジェクトが同様の名前を持っている場合、名前での検索は非常に効率的です。コンポーネントを検索することもできます。
現在、交換した場合、すべてのオブジェクトが一度に交換されることがわかります。彼らが互いに参照を持っていれば、彼らも保存されていたでしょう。
プラグインを使いやすくするために、あなたが知っておくべきいくつかの制限があります:
component intersection完全性のために統一コンポーネントを示している場合、その価値は現在維持できません。唯一の例外は、独自のUIを持つtransformコンポーネントです(以下を参照)。one component type per objectに制限されます。シーンオブジェクトに同じタイプの複数のコンポーネントがある場合、最初の値のみが維持されます。残りは廃棄されます。objectへの外部参照が維持されます。ただし、外部オブジェクトの参照は、交換後に常にparentオブジェクトを指します。 [email protected]でいつでも私に連絡できます。