Successfully reported this slideshow.
Your SlideShare is downloading. ×

脱! 俺たちは雰囲気でBPをいじっている

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 47 Ad
Advertisement

More Related Content

Slideshows for you (17)

Similar to 脱! 俺たちは雰囲気でBPをいじっている (20)

Advertisement

More from Naoaki Yamaji (20)

Recently uploaded (20)

Advertisement

脱! 俺たちは雰囲気でBPをいじっている

  1. 1. 脱! 俺たちは雰囲気でBPを いじっている
  2. 2. 自己紹介 山地 直彰 XRを中心に関西とかで活動してる関西のHoloLensの人 最近はHoloLens×UE4での開発もしてる
  3. 3. 発表内容について わりと初心者向け 個人的にプログラマーとしてブループリントを使うなら知っておいた方がよさげ な点をいくつか紹介する
  4. 4. 内容 ・イベント、関数、マクロ ・純粋、const ・プライベート ・変数の設定 ・ゲームモード
  5. 5. イベント、関数、マクロ
  6. 6. イベント、関数、マクロ この3つ使い分けてますか? どれでやっても同じ処理もあるが、それぞれできること、できないことがある
  7. 7. 特徴 イベント 関数 マクロ 実行ピンの数 1 0 、1 0以上 戻り値の数 0 0以上 0以上 アクセス指定子 Public(なし) Public、Protected、 Private Private(そのクラ ス内のみ) イベントディスパッチャーのバ インド 可 可 不可 Latentノード(Delay等)呼び出し 可 不可 可 オーバーライド 可 可 不可 ネットワーク越しの呼び出し 可 不可 不可
  8. 8. イベントを選択するケース ●外部から、またはイベントディスパッチャーにバインドして呼び出したい処理 内にLatentノード(Delay等)を使いたい ●ネットワーク越しに呼びたい (サーバーのみで実行等の指定も可能) ●戻り値は不要
  9. 9. ネットワーク越しにイベントを実行する設定 ざっくり説明 【マルチキャスト】 クライアント、サーバー全てで実行される 【サーバーで実行】 サーバー(ホスト)側でのみ実行される 【所有しているクライアントで実行】 クライアント側のみで実行される
  10. 10. よく見かけそうなイベント ・BeginPlay ・Tick ・On Component Begin Overlap ・AnyDamage ・キーボードやマウス等の各種入力イベント
  11. 11. 関数を選択するケース ●戻り値を持たせたい ●外部から、またはイベントディスパッチャーにバインドして呼び出したい ●子ブループリントを作成して、関数をオーバーライドしたい
  12. 12. よく見かけそうな関数 ・PrintString ・SpawnActor ・GetActorLocation ・SetActorLocation
  13. 13. マクロを選択するケース ●実行ピンを複数使用したい ●外部から、またはイベントディスパッチャーにバインドして呼び出す必要がな く、処理内にLatentノード(Delay等)を使いたい ※マクロはコンパイル時に展開される
  14. 14. よく見かけそうなマクロ ・Branch ・Sequence ・DoOnce ・ForLoop
  15. 15. 純粋、const
  16. 16. 純粋 チェックを入れると実行ピンが消える 結果、関数の実行タイミングが変わる (値を取得する系の関数でよく使われる)
  17. 17. 純粋設定によって関数の実行タイミングが変わる例 ブループリント内の変数を+1してからその値を返す関数を作る
  18. 18. 純粋設定によって関数の実行タイミングが変わる例 純粋指定せずに呼び出すと、実行結果は1が2回出力される
  19. 19. 純粋設定によって関数の実行タイミングが変わる例 純粋指定して呼び出すと、実行結果は1と2が1回ずつ出力される
  20. 20. 結果が変わった理由 実行ピンがない関数は、戻り値の取得時に毎回関数が呼び出されるようになる
  21. 21. 純粋使用時のメリット/デメリット 【メリット】 値を参照する際にリアルタイムで値が更新できる 実行ピンがない分、ピンの数が減って管理しやすい 【デメリット】 値が変わる処理等があるとバグにつながりやすくなることが予想される 値を変えずとも、内部で処理負荷の高い計算をすると、値取得の度に処理負荷を かけてしまう
  22. 22. const 関数内でブループリント内の変数の変更が できなくなる(変更処理がコンパイルエラー となる) const設定した関数内ではconst設定してい ない関数は呼べない 純粋と同時に使用するとターゲットピンが 増える
  23. 23. const化するメリット const関数をいくら呼んでも、ブループリント内の変数の状態が変わらないことが 保証される(他のブループリントの変数を変更したり、constでない関数を呼んだ りすることはできる)
  24. 24. プライベート
  25. 25. プライベートって? 変数や関数を作成した際に設定できるアクセス設定 関数はpublic、protected、private、変数はprivateかどうか
  26. 26. 3種類の設定 【public】 別のブループリントクラスからでも自由に参照できる 【protected】 派生した子のブループリントからは参照できる 【private】 外からは参照できない(自身のブループリント内のみ)
  27. 27. プライベートにすると何が嬉しいのか【変数】 外部から勝手に変数を編集される心配がなくなる 外部で参照する必要のない変数を隠せる(変数の役割の明示化) (外部から勝手に値を編集されなくするのは、特に複数人数で開発した際にバグの トレースのしやすさにも関わる)
  28. 28. プライベートにすると何が嬉しいのか【関数】 外部から勝手に関数を呼ばれる心配がなくなる 外部から呼ぶ必要がない関数を隠せる(関数の役割の明示化) 【protected】子ブループリントから(または自身から)のみ呼び出せる、オーバー ライドできるようにすることもできる
  29. 29. 変数の設定
  30. 30. 抜粋して紹介 ・インスタンス編集可能 ・ブループリント読み取り専用 ・スポーン時に公開 ・レプリケーション
  31. 31. インスタンス編集可能 レベルに配置した際に、詳細から値を設定できる ようになる レベルデザイン時に設定したい値とかを設定して おくと便利
  32. 32. ブループリント読み取り専用 ブループリント内で編集できなくする(コンパイル時にエラーがでる) 定数的に扱える(プライベートじゃなくても外部からもセットできなくなる) 個人的にはインスタンス編集可能やスポーン時に公開と併用してよく使う
  33. 33. スポーン時に公開 インスタンス編集可能設定と併用するこ とで、スポーン時に値を外から設定でき るようにピンを追加できる キャラクターのHPをスポーン時にラン ダムで設定する等もできる
  34. 34. レプリケーション マルチプレイヤーでプレイする際にネットワーク上で複製するかどうかの設定 【Replicated】 値が常に同期されるようになる 【RepNotify】 値が変更された際に通知を受け取れる (コールバック関数のイメージ)
  35. 35. ゲームモード
  36. 36. ゲームモードで設定するものたち ・Default Pawn ・HUD Class ・Player Controller Class ・Game State Class ・Player State Class ・Spectator Class ※半分ネットワーク絡みの話です
  37. 37. Default Pawn デフォルトで使用するポーン。プレイヤーキャラクターのポーンを設定すること が多い(ここで設定したクラスがPlayerStartの位置にスポーンされる) ここはよく使うと思うので割愛
  38. 38. HUD Class HUD(ヘッドアップディスプレイ)用のクラスを設定 UMGでいいや感があるのでここも割愛
  39. 39. Player Controller Class プレイヤーキャラクターのコントローラーを設定することが多い ここもよく使うと思うので割愛
  40. 40. Game State Class 主にマルチプレイヤーのゲームの場合に、 プレイヤーごとではなくGameModeごとで管理したい情報を管理するクラス(現在 のゲーム参加人数等) ネットワーク上では、全てのクライアントに同じものが複製される
  41. 41. Player State Class プレイヤーごとで管理したい情報を管理する(プレイヤーごとのスコア等) ネットワーク上では、全てのクライアントが個別に持っている
  42. 42. Spectator Class 使ったことないうえに情報もほとんどなくてよくわからない(すみません) 傍観者としてゲーム内に入ることができるクラスの設定 Paragonでも既存のゲームにマッチングして傍観者として様子を見れるという機能 で使われているとのこと (会場のUnrealな人に教えていただきました)
  43. 43. GameModeについても補足 GameModeはネットワーク上ではサーバー上に1つだけ存在している また、GameModeクラスとGameModeBaseクラスがあり、地味にできることが違 うので、軽く覚えておくといいかも(ちなみにGameStateにもBaseクラスがある) GameModeの方がマルチプレイヤーのゲーム向けに色々機能が付いている
  44. 44. ついでにGameInstanceについても軽く GameModeの設定がパーシスタントレベルごとのワールドセッティングに紐づい ているが、GameInstanceはゲーム中にずっと同じものを使用する 一つのGameMode内で完結する情報はGameMode内の各部分で管理、複数のパー シスタントレベルをまたぐ場合や、ゲーム中を通して管理したい情報は GameInstanceというイメージ
  45. 45. 告知
  46. 46. 告知 2/18(日)【13:00~20:00】 UE4もくもく会+ミニハンズオン 2/21(水)【19:30~21:00】 XRミーティング 2018/02/21 3/10(土)~3/11(日)【10:30~20:00】 大阪でも第9回UE4ぷちコン ゲームジャム
  47. 47. 以上

×