PaperSloth’s diary

Unity(C#)、UE4(Blueprint/C++)についての記事を書いたり日常のことをつぶやきます。

UnityからUE4引越しガイド01(C#→BP編)

こんちは!

 

久しぶりの更新ですね。

一ヶ月ちょっとぶり?でしょうか...
 
 
今回はUnityC#からUE4のBlueprintへのお引越しについてまとめます。
 
今回のお品書き

・テキストベースでよくない?

 ビジュアルスクリプトとかまたルール覚えるのめんどくさそう

・ビジュアルスクリプトって言っても機能が少ないからどうせコード書くんでしょ?

 

C#からBlueprintへのお引越し実践。

 (メインはここなので最悪上記2点は飛ばしても結構です)

 
 
ではでは、早速話を進めましょう。
 
先ずはこちら
・テキストベースでよくない?
 ビジュアルスクリプトとかまたルール覚えるのめんどくさそう
 
 
はい、そう思う方は回れ右
 
 
というのは冗談ですw
実は、私も最初はそう思ってました。
ノードとかピンとか見慣れないし、スパゲッティコードがスパゲッティノードになるだけでしょ?
作りにくそう!
という印象でした。
 
実際に作ってみると、スペックの低いPCを使ったりしない限りはサクサクコードが作れますし、打ちまつがいがなくなるので、とても助かります(変数名、コメントなど直打ちの箇所は除く)
 
勿論、最初は慣れない環境に苦戦しますがそれはテキストベースのUnityでも同じだったはずです。
新しいツールを使う時は色々と覚えなければならないことがあるので、その都度頑張って覚えるしかないですね。
 
頑張れ!って言うだけなら簡単ですが、無責任なので補足w
・テキストベースでもビジュアルスクリプトでもやることは同じ。
この辺の詳しい解説は最後の実践部分で解説します。
 
 
 
続いては
・ビジュアルスクリプトって言っても機能が少ないからどうせコード書くんでしょ?
 
はい、これについては業務で使っている訳ではないのであまり確信を持って宣言することはできません...
 
ですが、基本的にBlueprintのみでほぼ全てのジャンルのゲームを制作することが可能です。
Blueprintだからこの処理ができない!っていうのは、今のところ聞いたことがありません。
 
懸念点があるとすれば、速度の問題でしょうか?
やっぱりC++でゴリゴリ書いた方が速いです。
 
ですが、そこはC++でもぐちゃぐちゃなアルゴリズムだと遅くなりますし、かなりの差異が出るとも思えません。
キングダムハーツ3くらいの大規模開発や、他に特別な理由がない限りはBlueprintでいいと思います。
 
逆に今後の流れとしてビジュアルスクリプトを扱えないと不便になりそうな気がしているので、あまり頑固にならずにBlueprintにも触れてみてください(。-_-。)
 
 
 
いよいよお待ちかね?実践編です。
C#からBlueprintへのお引越し実践。
 

先ず、Blueprintで何ができるの?種類は?主に使うノードは?

 

そういった基礎的なことはこちら4点

alweiさんのブログにいっぱい情報あります。

こちらの記事はUE4.1の時のものですが、大体今と変わりません。

unrealengine.hatenablog.com

 
株式会社ヒストリアさんのブログも参考になります。
こちらも少し前の記事ですが、やはり基礎のノードはこのへんですね。

historia.co.jp

 

あとは公式見ろ(丸投げ)

とはいえ、日本語化が進んでて読みやすくなってます。

docs.unrealengine.com

 

今話題のUE4極め本です。

ぶっちゃけUE4で知りたいことのほとんどが載ってます。

www.amazon.co.jp

 
 
前置きが長くなりましたが、
ここからはUnity C#からUE4 Blueprintでのコーディングで私が躓いたとことか書いていきます。
 
・if文
ヒストリアさんのブログにあるようにBranchを使うだけでif文が使えます。
ただ、if文で書いてたことをif文を使わずに判定する時にちょっと躓いた。
 
例:死亡判定

C#

private float m_Health = 0.0f;

private const float MAXHEALTH = 100.0f;
void Start()
{
m_Health = MAXHELATH;
}
void Update()
{ if( IsLive() )
{ Debug.Log("Live:元気でーす");
} else { Debug.Log("Dead:ぞんぞんびより");
}
}
private bool IsLive()
{ return m_Health > 0.0f ? true : false; }
 

Blueprint

先ずは変数、関数定義
赤枠:関数
青枠:変数

f:id:PaperSloth:20150917025653j:plain

 
続いてStartとUpdate内の記述

f:id:PaperSloth:20150917025258j:plain

 

続いてIsLive関数の記述

f:id:PaperSloth:20150917025509j:plain

 
で、どこに躓いたのか
IsLive内のHealth判定。
ここはC#では
if( m_Health > 0 )
と記述するが、Blueprintでは
Branchを使わない。
 
こういった値の比較なんかもifを使ってきていたので、最初は慣れなかったです。 
でも、見てのとおりシンプルなので直ぐに習得できますよー
 
 
 
他にも躓いたところは沢山あるのですが、それはまた次の機会に('ω')
ちょっと書き方は違うけど、やってることは同じなんだからコワクナイヨー
というお話でした!
 
ではでは!