2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【UE4】Unityと比べて思ったこと

Last updated at Posted at 2020-04-16

Unityをそれなりに触ってきたやつが
UE4独学で学習したり仕事で使用したりで約1ヶ月
率直に思ったことを書いてみます
なので薄っぺらいことばかり書きます
※気づき次第更新するので多分項目増えていきます

先に言っておくと
UE4はC++とBlueprint(以下BP)どっち使うかでかなり変わってきます

とりあえず思ったこと

言語

Unity:C#
UE4:C++(UnrealC++)/BP

基本的にUnityはC#書ければ大抵のことはできるし情報も多いので大体なんとかなる

C++はエンジニアじゃないとなかなか手が出せない
エンジニアでもC#から久々にC++触ったときはもう絶望しました
しかもUnrealC++と呼ばれてるUE4専用の書き方などもあります

ただ
基本的にBPメインで
処理負荷が気になるところや拡張したい部分のみC++にする感じがいい気がしますね

BPは慣れればUnityよりも作りやすいです(多分)
コード書かないんで

あとC++とBP使い分けれるので
どこでどっち使うかちゃんと決めておかないと後半カオスになりそうです

ダウンロード/インストール

Unity:長い
UE4:めっちゃ長い

UE4は容量すごい
Wifiでダウンロードする場合は気長に待つ

情報

Unity:ググったら沢山
UE4:ググっても全然ない

これが一番つらいかも
UE4もBPであればまだあるんですが
C++についてはもう致命的に少ないです
ちょっと深いクラス調べようもんならUE4のリファレンスしかでてこないですからね
しかも定義だけしか書いてないものとか
使い方が知りたいんだが、ぐぬぬ

コンパイル

Unity:コード量によるがそこまで遅くはない
UE4(C++):インクルードしまくるととんでもない時間かかる
UE4(BP):比較的速い

Unityはコード変更したら基本的に自動でやってくれますよね
UE4は自分でポチる必要があります
動作確認するときたまに忘れます

あとコンパイルエラーわかりづらいです

UE4はBPメインであれば速いです
そういうこともあってBPとC++どっちメインで作るかによって作業時間かなり変わってきます
C++使う場合は不要なインクルードはしないように

設定

Unity:項目は色々あるけどまぁ分かる
UE4:項目ありすぎて何度も迷子になる

UE4は全体的に設定項目やウィンドウがめちゃくちゃあります
どこに何があってどこで設定するのか
何度もやらないと覚えられないです
すぐ迷子になってググります

結局慣れなんでしょうけど
それにしても多いしなんか設定ごとのまとまりがイマイチしっくりこなかったりする

VisualStudio

Unity:C#
UE4:C++

言語の仕様的なものなのでしかたないんですが
C++の場合
インテリセンスがとにかく重い
クラスとかにカーソル合わせても詳細がなかなかでない
参照先になかなか飛んでくれない
コメント書きづらい(C#はXMLコメントが自動補間される)
インクルード(C#だとusing)の不要削除や整理が自動でできない
とかとか…

いかにC#が書きやすかったかと


そもそもBPを使用すればVS自体触らないです

正直BPは思ってた以上に機能が充実してます
結局C++書かないとできないこととか多いんでしょって思ってたんですけどね
実際BPだけでもなんとかなります

基盤

Unity:マネージャ
UE4:継承

プログラムの設計の話

個人的にゲームに依存しない基盤部分の設計が好きなんですが
Unityでは入力やオブジェクトなど基盤部分はマネージャを作って実装してたのに対し
UE4はゲームに特化したエンジンということもありゲームの基本ルーチンが出来上がってます
入力やオブジェクト専用のクラスが既にあって
それを継承してプロジェクト独自の処理を作っていく感じ

良くも悪くも
自由な設計ができるUnityに比べて
UE4にはある程度固められた設計があります

常駐オブジェクト

Unity:DontDestroy
UE4:ない?

Unityでシーン間で引き継ぎたい場合はDontDestroyでいけるんですが
UE4では今のところ見当たらないです
厳密にはActor(GameObject)がシーン間で引き継げない?
もちろんC++のコードは残せるんでマネージャとか描画されないものは問題ないんですが
例えばフェード用オブジェクト(ローディング画面)とかUnityでは常駐させてたんですが
UE4ではどうするんだろうか

クラッシュ

Unity:実行してあるとき急になんかクラッシュする
UE4:すぐクラッシュする

これはなんだかんだでクラッシュするのはいいことだと思います

Unityの場合はおかしな実装をしてても意外と動く
nullrefとか起きててもそれなりに動いちゃうんですよね
でAndroidとかしかも特定端末だけたまにクラッシュする…みたいな
実装してしばらくしてから問題になるんですが

UE4はnullrefしようもんなら容赦なくエディタごとクラッシュさせます
問題の箇所にすぐ気づけるのでいいですね

ちなみにBPでの実装であれば基本的にクラッシュの心配もなさそうです
(エンジンの不具合がなければ)

現時点では

UE4使うんならBPメインがいい
ってことに行きつきました

C++でがっつり実装しない限りはUE4は作りやすいと思います
BPはちょっと慣れが必要ですが記事や本もそこそこ出てきているので

といっても仕事となるとプロジェクトによってはC++は避けられなかったりもするんですが
少なくともBPを最大限利用することで開発が捗るんじゃないかなと思います

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?