Unity Scriptコーディング→Unreal Engine Scriptコーディング

Unreal Engineの操作は書籍を見ながら少しずつ調べてる。でも、コーディングに関しては現状ネットで調べながら進めるしかなさそうなのだ。

UnityユーザーがUnreal Engineの使い方を学ぶには?
別にUnityからUnreal Engineへ完全に乗り換えるという話ではなく、UnityユーザーがUnreal Engineの使い方を覚えるにはどういう方法が良いかなという話。Unity一本で行こうというつもりもないし、他のツールの特性も...

コーディングもUnityになぞらえて学習時間を短縮したいところ。コーディングはGUI操作よりもエンジンの設計思想の影響を受けやすいので、ちゃんと違いを理解しておきたい。
幸い、Unreal Engineの公式ドキュメントにUnityのScriptと照らし合わせた解説が載っている。

Unity 引っ越しガイド:ゲームオブジェクトからアクタへ

スクリプト可能な Actor ブループリント クラス

UE4 の優れた機能をご紹介します。新規 Actor ブループリント クラスは、独自のブループリント ビジュアル スクリプティングを持ちます。これにより、個々のコンポーネントだけでなく、オブジェクト全体にロジックを追加できます。継承と組み合わせると (以下で説明)、ゲーム デザインのフレキシビリティが非常に高くなります。


スポンサーリンク



ビジュアル スクリプトをサポートするブループリント クラスに加えて、UE4 ではコードで実装された C++ クラスもサポートしています。以下は、Unity C#、UE4 C++、UE4 ブループリントです。

Unity C#

using UnityEngine;
using System.Collections;

public class MyComponent :MonoBehaviour
{
    int Count;

    // 初期化に使用します。
    void Start ()
    {
        Count = 0;
    }

    // フレーム毎に更新が一回呼び出されます。
    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;

    // このアクタのプロパティにデフォルト値を設定します。
    AMyActor()
    {
        // Tick() を呼び出すことができるようにします。
        PrimaryActorTick.bCanEverTick = true;
    }

    // ゲームの開始時またはスポーン時に呼び出されます。
    void BeginPlay()
    {
        Super::BeginPlay();
        Count = 0;
    }

    // フレーム毎に呼び出されます。
    void Tick(float DeltaSeconds)
    {
        Super::Tick(DeltaSeconds);
        Count = Count + 1;
        GLog->Log(FString::FromInt(Count));
    }
};

Unreal EngineでActorと呼ばれているものがUnityで言うところのGameObjectのような存在らしいが、ScriptはGameObjectにあたるActorにアタッチするのではなく、Actorを継承して拡張したクラスを作る方式らしい。

慣れるために公式ドキュメントのプログラミング入門編をやってみた。
Unreal Engineの最新バージョンではWindows環境だとVisual Studio 2015がデフォルトのコーディング環境らしい。2013には非対応。どうしても2013を使いたい場合は、Unreal Engineのソースコードからオプション設定して全部ビルドしないといけないらしい。

最初のコード プロジェクトを作成し、新規 C++ クラスを追加します。


Scriptを少し修正するだけでも明示的にコンパイルのプロセスが入るのはちょい手間に感じてしまうな。普通のC++プログラミングはみんなそうだけどさ。

追記:Qiitaで良い記事が投稿され始めた↓

# 対象人物 Unityを使った事が有り、 Blueprintを使ってみたけどやっぱりC#みたいな言語で書きたいと思ってる。 けどUnrealC++に手を出そうとしたら出来る事が多すぎて 全体的にボヤッとしてて何をすべきか分からない。...


スポンサーリンク

関連記事


Also published on Medium.