LoginSignup
20
15

More than 3 years have passed since last update.

[UE4]BPを作る時に留意している設定

Posted at
  • 本記事に関して
    • 確認バージョン: UE4.24.0
    • C++側の設定も

普段やっていること、気にしている事を適当にメモしました。
大体において自分の思うままに組んでいますので、ぼくはそうじゃないとかあるかもしれません。
間違ってたらごめんなさい

BP/AActorを作った時

説明 / Tooltip

image.png

BPの「クラス設定」から詳細パネルの「Blueprint Description」
マウスカーソルを乗せた際に説明文が出てくるようになります
image.png
image.png

このBP自体の説明を記述して使用する人が何をするBPなのか分かりやすくする、他の人に引き継ぎを行う、1年後の自分に。

C++の話
image.png
クラス前のコメントがそのまま説明に出てきます

要らない表示を消す: Hide Categories

image.png

BPの「クラス設定」から詳細パネルの「Hide Categories」
使用しない設定を詳細パネルから消す事ができます
※消すカテゴリーは英語版名で記述する必要が有ります
image.png
右の方は、「レプリケーション」「コリジョン」「インプット」が消えています。
デフォルトですと全部表示され、見づらくなっています。
また、「配置したBPではここ弄ったら駄目!」というのも隠せます。誤操作を減らせます。

C++の話
C++のActorではUCLASSに「HideCategories」キーワードになります
image.png

抽象クラス設定: Generate Abstract Class

image.png

BPの「クラス設定」から詳細パネルの「Generate Abstract Class」
他のBPの親クラスになる前提のBPに付けます。(親クラス/基底クラス専用BP)
image.png

効果としては下記の通りで、誤って配置されるのを防ぎます。
このBPから派生して更にBPを作っていくので、このBP自体を配置しないでほしい時に

  • シーンに配置できない
    • image.png
  • 「Spawn Actor」のリストに出てこない
    • image.png
  • 「コンポーネントを追加」のリストに出てこない
    • image.png
  • 変数の型としては使用できます
    • image.png

C++の話
C++のActorではUCLASSに「Abstract」キーワードになります
機能的にはC++の抽象クラスとほぼ同じだと思います。
image.png

[C++]レベルへの配置を禁止する: NotPlaceable

image.png
UCLASSに「NotPlaceable」キーワードになります。
レベルへの直接配置を禁止します。
ロジックで使うActorなので、レベル配置はNG、といった時に使います。
大雑把に言えばManagerのような管理クラスや、プレイヤーが発射する弾クラスとかでしょうか。

image.png
「配置」から検索しても出ないようになります。

image.png
Abstractと違い、Spawn Actorは出来ます

クラスのデフォルト設定(チェックボックス類)

2019-12-22_16h55_05.png
エンジンの中まで把握していないので、ざっくりと要らないのはOFFにしておきます。

  • Start With Tick Enabled / Tick Interval(secs)
  • Can Be Damaged
    • Apply Damage系された時に処理するか。ダメージ処理必要なければOFFに
      • (エンジンの中まで見てないですが、処理候補となることで負荷になるかも)
  • Find Camera Component when View Target
    • View(カメラ)ターゲットにされた時に検索するか?

変数を作った時

ツールヒント

2019-12-22_17h53_28.png

変数にマウスカーソルを乗せた際に説明文が出てくるようになります
何に使ってる変数なのか、他の人や後の自分の為に説明を書いておきましょう

image.png

ブループリント読み取り専用

image.png

デフォルト値以外、ブループリントから値変更不可能になります。
パラメーター調整用に用意した変数で、ロジックで上書きされてほしくない時とかに使います。

image.png
Setが出来ません

C++の話
UPROPERTYにBlueprintReadOnly指定にすると同じ効果になります。
image.png

プライベート

image.png

他のBPからアクセス出来なくなります。自分自身のBPからはアクセス出来ます。
OFFですと、どこのBPからでもアクセス出来る為、後から流れを追う時に追いかけづらくなります。

image.png
他のBPから候補に出てこなくなります。

image.png
また、内部変数が増えてくると可視性が悪くなるのを防ぐ効果もあります。

カテゴリ

2019-12-22_17h46_38.png
変数をカテゴリでグループ化出来ます。

image.png
変数欄やBPからのノード出しで並んでて可視性が……
image.png
これをグループ化出来ます。

また、「|」を使うことで入れ子にも出来ます
image.png

可視性を上げましょう

C++の話
UPROPERTYのCategory指定で出来ます
image.png

値範囲の設定

image.png
変数を調整する際のスライダーで操作出来る範囲、入力結果のクランプが行えます。
image.png
このスライダ範囲が設定されていないと、スライダーで弄ると数値が大きく動き細かい調整がしづらくなります。
特にシーンに配置して調整、シーケンサーで調整する変数等は仕込んでおく良い思います。
また、調整する人に「大体この辺の数値取る」という意図にもなります。
(「値の範囲」は0以下になったら絶対駄目、1.0より大きくなったら絶対駄目、とかキツイ制限かける時だけなのであんまり使わないかも)

関数を作った時

2019-12-22_18h09_59.png
「説明」、「カテゴリ」は変数の時と同じです。

アクセス指定子

image.png
この関数はどこから使用可能か、になります。
自分自身の内部処理用の関数なのに、外のBPから呼び出しが出来てしまう……といった意図しない呼び出しを防ぎます。

image.png

  • パブリック: どこからでも使用可能
    • →他のBPから操作する時に
  • プロテクテッド: 自分自身と、子ブループリントからのみ使用可能
    • →子ブループリントでも処理したい時に
  • プライベート: 自分自身からのみ使用可能
    • →内部処理を行う時とかに

プライベート→プロテクテッド→パブリック、の順で可能な限りアクセス出来る範囲を狭めていく良い思います

C++の話
UFUNCTIONのmeta指定で「BlueprintProtected」で「プロテクテッド」指定できます
image.png

20
15
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
20
15