全般的なベスト プラクティスGeneral best practices

Mixed Reality 用の Unreal Engine プロジェクトを作成するときに、すべての開発者に従うことをお勧めする一般的なベスト プラクティスを示します。The following are some general best practices we recommend all developers follow when creating an Unreal Engine project for Mixed Reality.

コンストラクターConstructors

ブループリントで "コンストラクター" に相当するものが必要な場合は、Unreals のコンストラクション スクリプトを使用します。If you need the equivalent of a "constructor" in blueprints, use Unreals' construction script. "BeginPlay" イベントを使用する場合と比較したときの最大の利点は、コンストラクター スクリプトは "エディター" でも実行されることです。The primary advantage over using "BeginPlay" events is the constructor script runs in the "editor" as well. ほとんどの場合、起動時に、またはコンパイル時でさえ、値をキャッシュできます。Most of the time the values can be cached right at the start or even at compile time.

注意

コンストラクション スクリプトのサポート情報の詳細については、エディター拡張機能の概要に関するページを参照してください。You can find more supporting information for Construction scripts in our editor extensions overview.

3D ボタンとテクスチャ3D buttons and textures

Mixed Reality アプリケーションで 3D ボタを作成したり、その使用を計画したりするときは、パフォーマンスについて考えるのが自然です。It's natural to think about performance when creating or planning to use 3D buttons in mixed reality applications. ただし、すべてのものをメッシュから 3D として認識されるようにする必要はありません。However, not everything has to be made from meshes to be perceived as 3D. テクスチャが慎重に作成されている Paper2D を使用して 3D の外観を取得するためのオプションがあります。You have the option of using Paper2D with carefully crafted textures to get that 3D look. これは 3D "のように見える" ボタンの場合は非常にうまく機能しますが、クワッド上の加工された画像に過ぎません。This works really well for buttons that "seem" 3D, but are just photoshopped images on a quad. これらの装飾的なバージョンは、スプライトと呼ばれます。A fancy version of these is called a sprite.

バリアントVariants

実行時に複数のオブジェクト構成を使用してシーンを作成するシナリオでは、Unreal バリアントを使用します。Use Unreal Variants in scenarios where you're creating a scene with multiple object configurations at runtime. バリエーションには、変化する素材やメッシュを含めることができます。Variations can include changing materials or meshes.

アニメーションAnimation

多数の "対話型アニメーション" を作成する場合は、Spline コンポーネント (Spline "Mesh" コンポーネントではなく) と Timeline ノードを利用します。Take advantage of the Spline component (not the Spline "Mesh" Component) and Timeline nodes if you're creating lots of "interactable animations".

通信Communications

オブジェクトを動的に見つけることが困難な場合や、複数のアクターとブループリントの間の通信に使用される帯域幅が多すぎる場合は、Level ブループリントを使用します。Use a Level Blueprint if you're having trouble dynamically finding objects or using too much bandwidth to communicate between multiple actors and blueprints. Unreal Engine 4 は Unity とは異なり、すべてのものをコンポーネント内に置く必要がないことを思い出してください。Remember, Unreal Engine 4 isn't like Unity, not everything has to be inside a component. Level ブループリントは、複数のアクター間の通信を単純化するための、完全に有効で推奨される方法です。Level Blueprints are a perfectly valid and recommended way of simplifying the communication between multiple actors. オブジェクト参照さえ、Level ブループリントの OnBeginPlay で起動時に "キャッシュ" することができます。Object references can even be "cached" at startup in the Level Blueprint's OnBeginPlay.

グローバル状態Global state

多くの場合、スコア、レベル データ、プレーヤー固有の情報、または特定のオブジェクトにまったく属していない他のものなど、レベル固有の状態を格納する必要があります。You'll often need to store level-specific state like score, level data, player-specific information, or anything else that doesn't quite belong to a particular object. GameMode を見落とさないようにしてください。Don't overlook the GameMode. ほとんどの人はその存在を忘れていますが、GameMode はレベルごとに作成でき、各レベルに固有のデータが含まれています。Most people forget that it exists, but the GameMode can be created per level, and contain data specific to each level.

ブループリントの最適化Optimizing Blueprints

ブループリントの検索に時間がかかりすぎる場合は、C++ のコードを書き直す前に、Unreal でブループリントを "ネイティブ化" します。If you're finding your blueprints to be too slow, let Unreal "nativize" your blueprints before resorting to rewriting the code in c++. 独自のカスタム ソリューションを作成する前に、自動的なネイティブ化を使用してみてください。Try using the automatic nativization before creating your own custom solution.

包含のブループリント ネイティブ化方法が強調表示されているブループリントの設定