﻿1
00:00:04,370 --> 00:00:05,360
‫こんにちは､ ようこそ｡

2
00:00:05,360 --> 00:00:11,450
‫この講義では､ C++ から Blueprint に新しいノードを作成し､ Blueprint

3
00:00:11,450 --> 00:00:17,180
‫内から C++ の機能を呼び出す方法について見ていきます｡

4
00:00:17,180 --> 00:00:18,770
‫さっそく潜入してみましょう｡

5
00:00:18,920 --> 00:00:27,260
‫さて､ ブループリントを使ってブループリント・ノードを呼び出すのは良いのですが､ 実際にはこのブループリントの一部からグラバーをアクティブにしたいのであって､

6
00:00:27,260 --> 00:00:32,300
‫文字列をプリントアウトしたいわけではありません｡

7
00:00:32,300 --> 00:00:34,670
‫では､ どうすればいいのか？

8
00:00:34,970 --> 00:00:43,520
‫幸いなことに､ C++クラスの関数をブループリントに簡単に公開することができます｡

9
00:00:43,520 --> 00:00:46,160
‫そして､ その方法は次の通りです｡

10
00:00:46,160 --> 00:00:48,560
‫それでは､ 新しいパブリック関数を作成します｡

11
00:00:48,560 --> 00:00:52,520
‫そこで､ ティックコンポーネントのすぐ下にある私の公開セクションに移動してみることにします｡

12
00:00:52,520 --> 00:00:58,250
‫そしてここでは､ releaseというvoid戻り値の型を持つ新しい関数を作成することにします｡

13
00:00:58,250 --> 00:01:03,830
‫そこで､ 後でグラブをすることになるのですが､ とりあえずリリース関数を呼び出すことにします｡

14
00:01:03,920 --> 00:01:07,790
‫Blueprintで利用できるようにするにはどうしたらいいですか？

15
00:01:07,790 --> 00:01:10,850
‫まあ､ U字機能にしておかないといけないんですけどね｡

16
00:01:10,850 --> 00:01:13,370
‫つまり､ 変数のプロパティがあるわけです｡

17
00:01:13,370 --> 00:01:20,570
‫ユーの機能は､ ブループリントの土地で関数を基本的に見えるようにすることに相当するようなものです｡

18
00:01:20,570 --> 00:01:23,210
‫しかし､ そこで終わらないのが､ 新しい物件と同じです｡

19
00:01:23,210 --> 00:01:38,330
‫u関数でどこでも編集できるようにし､ ブループリントを呼び出せるようにする必要があります｡

20
00:01:38,330 --> 00:01:42,530
‫では､ CPを取得して､ このための実装を作りましょう｡

21
00:01:42,530 --> 00:01:44,480
‫void return typeになりそうです｡

22
00:01:44,480 --> 00:01:45,500
‫Uになりそうです｡

23
00:01:45,530 --> 00:01:50,720
‫グラボ､ コロン､ コロン解放､ パラメータなし｡

24
00:01:50,720 --> 00:01:57,350
‫そして関数本体に､ u logを貼り付けて､ メッセージを与え､ beepをリリースするようにします｡

25
00:01:57,380 --> 00:02:05,600
‫そしてコンパイルしてbeepに戻します｡

26
00:02:05,600 --> 00:02:12,200
‫プレイヤー print stringノードを削除して､ releaseからドラッグして､

27
00:02:12,200 --> 00:02:17,060
‫関数としてreleaseを検索してみます｡

28
00:02:17,060 --> 00:02:19,130
‫では､ ちょっと見てきましょう｡

29
00:02:19,130 --> 00:02:23,090
‫グラボでやる必要があるため､ 今のところ何も表示されません｡

30
00:02:23,090 --> 00:02:34,360
‫そこで､ グラバーコンポーネントをイベントグラフにドラッグしてグラバー変数を作成し､ この上からドラッグしてリリースを検索してみましょう｡

31
00:02:34,370 --> 00:02:36,680
‫さて､ この件に関しても何も出てこないことにお気づきでしょうか｡

32
00:02:36,680 --> 00:02:44,180
‫それは､ ライブコーディングを使っていて､ ライブコーディングでコンパイルされたものがエディターに表示されないことがあるからです｡

33
00:02:44,180 --> 00:02:50,210
‫私たちがしなければならないことは､ エディタを閉じて､ ライブコーディングウィンドウを閉じて､ Visual Studioのコードで､

34
00:02:50,210 --> 00:02:57,410
‫コントロールシフトBを押して､ クリプトレイダーエディタのwin 64 Development Buildを使用してビルドすることです｡

35
00:02:57,410 --> 00:03:03,650
‫それが成功するのを待ってから､ 新しいプロジェクトファイルからエディタを再立ち上げしてください｡

36
00:03:03,650 --> 00:03:10,640
‫ここで､ BPプレーヤーを再び開き､ 今度はグラボをドラッグして離すと､ リリースが検索されます｡

37
00:03:10,640 --> 00:03:13,850
‫releaseというノードがあるのがわかると思います｡

38
00:03:13,850 --> 00:03:17,930
‫そして､ 確かにそれはすべてC++として呼び出すつもりです｡

39
00:03:17,930 --> 00:03:28,730
‫このように､ C++のものをBlueprintの世界に公開することで､ BlueprintとC++を密接に連携して使うことができることがおわかりいただけると思います｡

40
00:03:28,730 --> 00:03:33,170
‫次に､ リリース実行ピンをリリースノードに接続します｡

41
00:03:33,380 --> 00:03:38,630
‫ダンジョンに入り､ プレイを押してみる｡

42
00:03:39,320 --> 00:03:46,940
‫そして今､ 私が掴んでから離すと､ 出力ログに残っているため何も見えません｡

43
00:03:46,940 --> 00:03:52,430
‫では､ 出力ログを開いてレイアウトにドッキングさせ､ もう一度再生ボタンを押してみましょう｡

44
00:03:53,360 --> 00:03:57,860
‫そして､ 掴んでから離すと､ そこに簡単なメッセージが表示されるのがわかると思います｡

45
00:03:57,860 --> 00:04:04,340
‫1クリックごとにガーゴイル像がヒットするようなことをしているので､ スクロールが本当に速いんです｡

46
00:04:04,340 --> 00:04:09,530
‫しかし､ そこで立ち止まってログを見返すと､ グラボをリリースしたと書いてあるのがわかります｡

47
00:04:09,530 --> 00:04:12,980
‫つまり､ 私たちのC++のコードが実行されているわけです｡

48
00:04:13,010 --> 00:04:19,280
‫では､ スイープコードをグラブ関数に移動してください｡

49
00:04:19,280 --> 00:04:22,340
‫そこで､ grab関数を作成し､ Blueprintから呼び出すことにします｡

50
00:04:22,340 --> 00:04:25,010
‫先ほどのレリーズ機能と同じようにやるんですね｡

51
00:04:25,160 --> 00:04:29,630
‫しかし､ grab関数の本体を作るときに､ ただ何も表示しないのではなく､

52
00:04:29,630 --> 00:04:36,500
‫その掃き出しコードとif文とすべての準備変数をTICから移動して､ それをしないようにしましょう｡

53
00:04:36,500 --> 00:04:43,100
‫毎回､ grab関数を呼び出したとき､ マウスのボタンを押したとき､

54
00:04:43,100 --> 00:04:54,800
‫またはコントローラのトリガーを押したときにチェックします｡

55
00:04:58,180 --> 00:04:59,140
‫お帰りなさい｡

56
00:04:59,170 --> 00:05:03,850
‫では､ C++でヘッダーファイルまで行ってみましょう｡

57
00:05:03,850 --> 00:05:07,390
‫ここでコンパイルウィンドウを閉じて､ 上のリリースをします｡

58
00:05:07,390 --> 00:05:20,590
‫新しいU関数ブループリント､ callableを作成して､ grabというvoidにするつもりで､ これをC++で実装するつもりです｡

59
00:05:20,590 --> 00:05:22,600
‫だからまた､ 空白になるんです｡

60
00:05:22,600 --> 00:05:28,540
‫コロン､ コロンを掴み､ 括弧を掴み､ そして中括弧を掴みます｡

61
00:05:28,840 --> 00:05:36,130
‫そして､ このコードをすべてTICコンポーネントから移動させるつもりです｡ なぜなら､ スタート・ベクトルの設定や､ そのような良いものをすべて行っているからです｡

62
00:05:36,280 --> 00:05:42,940
‫わざわざ切り取って､ 代わりにあるべき場所にgrabに貼り付けてみましょう｡

63
00:05:42,940 --> 00:05:43,810
‫ちょうどいい｡

64
00:05:43,810 --> 00:05:50,120
‫では､ ライブコーディングでBPプレーヤーに機能をもたらすかどうか､ 見てみましょう｡

65
00:05:50,140 --> 00:05:55,150
‫ビープ音プレーヤーに移動して､ プリント文字列を削除し､ それをドラッグしてみましょう｡

66
00:05:55,150 --> 00:05:58,600
‫今あるノードを掴んで､ grab関数が見つかるかどうか見てみましょう｡

67
00:05:58,600 --> 00:06:02,170
‫なるほど､ 今回はグラブ機能が使えるようになったんですね｡

68
00:06:02,170 --> 00:06:02,860
‫それは素晴らしいことです｡

69
00:06:02,860 --> 00:06:11,410
‫それでは､ 押された実行ピンを接続して､ ダンジョンに行き､ 再生を押して､ 出力ログの一番下までスクロールしていることを確認してください｡

70
00:06:11,440 --> 00:06:17,530
‫ビューポートで右クリックして､ 周りを見てから､ 左ボタンを押します｡

71
00:06:17,530 --> 00:06:22,150
‫No actor hitと書いてあるのに即座に解除のグラボが表示されるから､ アクターヒットなし｡

72
00:06:22,150 --> 00:06:24,550
‫そして､ キーを離すと､ レリーズグラバーがない｡

73
00:06:24,550 --> 00:06:26,770
‫今､ ガーゴイルのところに行ったら､ 見てみようかな｡

74
00:06:26,800 --> 00:06:31,450
‫押すとActor hit Gargoyle Statueと表示され､ グラボを離すことができるようになりました｡

75
00:06:31,570 --> 00:06:38,770
‫これで､ このガーゴイルをつかむために､ 適切なアーキテクチャが整ったわけです｡

76
00:06:38,770 --> 00:06:42,760
‫次に､ この設定の物理的な部分を処理する必要があります｡

77
00:06:42,880 --> 00:06:44,290
‫それでは､ 次回の講義でお会いしましょう｡

