UnityからUnreal Engine4へ ~その2~
前回の記事の続きです。
前回の記事はこちら。
UnityからUnreal Engine4へ - プログラムの素
Projects and files
- Unreal EngineのプロジェクトはUnityのプロジェクト同様、そのプロジェクトのディレクトリ内に全てのプロジェクトファイルが配置される
- .uprojectファイルをダブルクリックすることでエディタを起動することができ、右クリックで追加オプションが選択できる
- プロジェクトのディレクトリ内にはいろんな種類のサブディレクトリが配置される
- もっとも重要なのはContentとSourceのサブディレクトリ
アセットの配置場所
- ゲームで使用するアセットはContentディレクトリ内に配置する
- アセットをインポートするには
- 物理的なプロジェクトのContentディレクトリ内にファイルを配置する
- エディタにおいてContent BrowserのContentディレクトリ内にインポートしたいファイルをドラッグ&ドロップ
サポートされているファイルフォーマット
Asset Type | Supported Formats |
---|---|
3D | .fbx .obj |
Texture | .png .jpeg .bmp .tga .dds .exr .psd .hdr |
Sound | .wav |
Fonts | .ttf .otf |
Videos | .mov .mp4 .wmv |
Sceneについて
- UnityではScene内にGameObjectを配置し、Sceneのアセットファイルとして保存される
- UnrealではUnityのSceneと似たものにMap fileと呼ばれるものがある
- Map fileはLevelやオブジェクト、ライティング情報やLevel内の設定を記憶する
Project Settingsの変更
- エディタのメニューのEdit / Project Settings
- Project Settingsについての詳細はUnreal Engine | Project Settingsを参照
- Unityで"player settings"と呼ばれていたものは、Unrealにおいては"platform settings"であり、project settings内のPlatformカテゴリに該当する
ソースファイル
- UnrealのプロジェクトではC++コードはSourceディレクトリ内に配置される
- C++ source(.cpp)
- header(.h)
- build scripts(.Build.cs .Target.cs)
- BlueprintのみのプロジェクトではSourceディレクトリは作成されない
GameObjectからActorへ
GameObject
- Unityでは、GameObjectとはワールド内に配置される"モノ"
- UnrealではActor
- Unrealでは特殊なタイプのActorを提供している
- Pawn(プレイヤーやAIオブジェクト用など)
- Character(アニメーションするクリーチャー用など)
- 特殊なタイプのActorについては、Unreal Engine | Gameplay Frameworkを参照
- ActorはUnityのGameObjectとはちょっと違う
Component
- UnityではGameObjectに複数のComponentを追加し、機能を提供することができる
- UnrealではActorに複数のComponentを追加できる
- UnityではGameObjectはComponentのリストを階層構造なしのリストで保持
- UnrealではActorは階層構造になっているComponentを持つことができる
PrefabからBlueprintへ
- UnityのPrefab
- UnrealではBlueprint
- ActorにComponentを付与し、Blueprint / Add ScriptボタンをクリックしてBlueprintの配置場所を選択したのちCleate Blueprintボタンで保存
- 作成したBlueprintはContent Browserから見えるようになる
- ダブルクリックすると編集でき、またレベル内にドラッグ&ドロップで配置ができる
Script ComponentとMonoBehaviour
- Unity
- Unreal
ActorのBlueprint
- Unity C#
using UnityEngine; using System.Collections; public class MyComponent : MonoBehaviour { int Count; // Use this for initialization. void Start () { Count = 0; } // Update is called once per frame. void Update () { Count = Count + 1; Debug.Log(Count); } }
- UE4 C++
#pragma once #include "GameFramework/Actor.h" #include "MyActor.generated.h" UCLASS() class AMyActor : public AActor { GENERATED_BODY() int Count; // Sets default values for this actor's properties. AMyActor() { // Allows Tick() to be called PrimaryActorTick.bCanEverTick = true; } // Called when the game starts or when spawned. void BeginPlay() { Super::BeginPlay(); Count = 0; } // Called every frame. void Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); Count = Count + 1; GLog->Log(FString::FromInt(Count)); } };
- UE4 Blueprint
Transform
- UnityではどのGameObjectもTransformコンポーネントを持っている
- UnrealではActorはRoot Componentと呼ばれるScene Componentを持っている
- Scene ComponentはワールドにおけるActorの位置、回転、スケールを提供し、それらは子階層の全てのコンポーネントに対して適用される
- 位置情報を持つため、多くのComponentはScene Componentのサブクラスのものを使用される
- Empty Actorを配置した場合、Actorに対して"Default Scene Root" Componentが作成され、それは純粋なScene Componentとなっている
- 新しいScene Componentを適用した場合、Default Scene Rootは適用されたものに置き換わる
階層オブジェクト
- UnityではGameObjectの階層構造を作成することができる
- UnrealではComponentを階層化することにより実現
Actorの種類
UnrealではActorのサブクラスとして以下のものが提供されている
- Pawn
- プレイヤーアバターのような制御可能なゲームオブジェクト
- PawnはプレイヤーやAIなどのような自身の制御により移動する
- Character
- Pawnの特殊バージョン
- 二足歩行のアバターに対して使用
- Controller
- Pawnを持ち、制御する
- Player Controller
* Controllerの特殊バージョン
- ゲームパッドやタッチ、マウス、キーボードなどから入力情報を得てPawnまたはCharacterを操作する