UE4 / プロジェクトをzip圧縮

ファイル > プロジェクトをパッケージ化 > プロジェクトをzip圧縮
でプロジェクトをzip圧縮できる。Savedなど実行時に作られるファイルは自動的に除外されるので便利。

f:id:hat0xAA:20190803101930j:plain

pluginsは含まれない。
DefaultGame.iniで自動追加するように設定したパッケージ(スターターコンテンツなど)があっても自動削除はされない。
ルートには.uprojectファイルのみ。slnやtxtなど他のファイルは含まれない
ルートのフォルダはContent Config Sourceのみ。

UE4 / スターターコンテンツを省略して送付する

Config/DefaultGame.ini
に以下の項目を追加すると指定したパッケージがプロジェクトの起動時に自動で追加される。

[StartupActions]
bAddPacks=True
InsertPack=(PackSource="StarterContent.upack",PackName="StarterContent")

プロジェクトの送付時にStarterContentフォルダを削除して送ることができるのでサイズ節約になる。

UE4 / C++ / エディタでTickを有効にする方法

Actor派生クラスのヘッダでShouldTickIfViewportsOnlyをoverrideしてtrueを返せばエディタでもTickが動くようになる。

virtual bool ShouldTickIfViewportsOnly() const override { return true; };

このアクタをレベル上に配置すると、エディタ上でもTickが定期的に実行されるようになる。
Tick間隔をクラスデフォルトで変更するとすぐ反映される。

このクラスを親に持つBPクラスを作った場合は
レベルに配置してもBPのTickはエディタ上では動かない。C++のTickのみがエディタ上で動く。
BP編集中だけBPのTickもエディタ上で動くようになるが、BPのTick処理からはGetAllActorsノードなどで他のアクタへアクセスできない。編集専用のレベル上で実行されているっぽい。

プレイした場合は通常のTickとおなじように動き、BPのTickからでも他のアクタへアクセスできる。

UE4 / BP / NameとTextとStringの違い

Name 内容変更不可で、内部で文字列をハッシュ値に変換して表現する特殊な文字列。検索や比較がとても高速で、主にアセット名や要素名に使用されている。
Text 内容変更不可の文字列。ローカライズに対応できる。主に表示用文字列に使用される。Stringより高速に利用できる場合がある。
String 内容変更可能な文字列。内容の追加や置き換え、大文字化、部分文字列取得、内容検索などいろいろ操作ができる。

UE4 / BP / 数値の文字列化で桁や","の有無を指定する方法

Format Textノードでは"{year}/{month}/{day}"のようにすると、"2,019/6/26"のように桁がばらばらで1000以上の値では","がついてしまう。
桁を合わせたい場合や","をつけたくない場合は、ToTextノードを経由すれば文字列化の設定を指定できる。
Use Groupingをoffにすれば","がつかなくなり、Minimum Integer Digitで最小桁数を指定できる。
f:id:hat0xAA:20190626142922j:plain