﻿1
00:00:04,200 --> 00:00:05,670
‫やあ､ お帰りなさい｡

2
00:00:05,700 --> 00:00:16,110
‫前回のビデオでは､ ブループリントの詳細パネルに特定の方法で C++ 変数を公開するための新しいプロパティ指定子をいくつか学びました｡

3
00:00:16,110 --> 00:00:23,430
‫このビデオでは､ これらの変数へのアクセスをよりコントロールできるようにするための､ いくつかの指定子について学びます｡

4
00:00:23,430 --> 00:00:29,400
‫また､ 詳細パネルでは､ 特定のC++変数に対して､ 実際のイベントグラフでどのようにアクセスを許可､

5
00:00:29,400 --> 00:00:33,330
‫読み取りまたは書き込みを行うかについて説明します｡

6
00:00:33,330 --> 00:00:34,860
‫では､ さっそく潜入してみましょう｡

7
00:00:35,310 --> 00:00:35,820
‫なるほど｡

8
00:00:35,820 --> 00:00:41,640
‫それでは､ VSコードに戻って､ 前回のビデオで作成した変数を表示します｡

9
00:00:41,670 --> 00:00:44,130
‫さて､ ここからが私のスピード変数です｡

10
00:00:44,130 --> 00:00:45,900
‫これは挑戦するためだった｡

11
00:00:45,900 --> 00:00:51,510
‫おそらく別の変数を作成したのでしょうが､ それは全く問題ありませんので､ その変数をそのままにしておいてください｡

12
00:00:51,510 --> 00:00:53,880
‫このビデオでは､ それを使ってさらにいろいろなことをやってみたいと思います｡

13
00:00:53,880 --> 00:01:04,110
‫ここで､ 変数をどこでも見えるようにできることを学びました｡ 「どこでも」というのは､ インスタンスまたはデフォルトのブループリントのいずれかの詳細パネルに表示することを意味します｡

14
00:01:04,140 --> 00:01:12,600
‫どこでも編集できるようにすることもでき､ visible instance onlyを使うと､ あるインスタンス上でのみ表示されることを確認しました｡

15
00:01:12,600 --> 00:01:17,820
‫デフォルトの設計図にも表示されないし､ なにしろグレーアウトしているので編集できない｡

16
00:01:17,820 --> 00:01:21,330
‫つまり､ これによって､ インスタンス上でのみ変数を可視化することができるのです｡

17
00:01:21,330 --> 00:01:25,080
‫しかし､ デフォルトのブループリントにのみ表示させたい場合はどうすればよいでしょうか｡

18
00:01:25,080 --> 00:01:27,360
‫まあ､ そのための仕様書もあるんですけどね｡

19
00:01:27,390 --> 00:01:34,560
‫32でもう一つ作り､ これをvisible defaults only intと呼ぶことにしましょう｡

20
00:01:35,210 --> 00:01:37,520
‫そして､ これを値に初期化することができます｡

21
00:01:37,520 --> 00:01:41,930
‫5点満点で､ これにもUのプロパティをつけます｡

22
00:01:41,930 --> 00:01:45,640
‫そして､ この指定は､ デフォールトでだけ見えるようにするためのものです｡

23
00:01:45,650 --> 00:01:47,780
‫お察しの通りです｡

24
00:01:47,780 --> 00:01:50,810
‫表示されるのはデフォルトのみです｡

25
00:01:50,810 --> 00:01:56,960
‫これをコンパイルして､ エディタに戻ってBP Pond Tankをもう一度開いてみます｡

26
00:01:56,960 --> 00:02:03,170
‫そして､ BP Pond Tankを自己選択すると､ すべての変数がこの上部に表示されるので､ 検索することもないですね｡

27
00:02:03,170 --> 00:02:09,620
‫しかし､ ここにあるのはデフォルトでのみ表示されるint型で､ 値は5です｡ もちろん､ 名前のとおりグレーアウトされており､

28
00:02:09,620 --> 00:02:12,500
‫デフォルトでのみ表示されます｡

29
00:02:12,500 --> 00:02:19,370
‫つまり､ ワールドでBP pond tankのインスタンスの1つを選択すると､ インスタンスには表示されず､

30
00:02:19,370 --> 00:02:23,540
‫デフォルトにのみ表示されるintがあります｡

31
00:02:23,540 --> 00:02:25,100
‫それで今､ 納得しているんです｡

32
00:02:25,100 --> 00:02:30,860
‫VSコードに戻り､ さらにいくつかの指定子について学びましょう｡

33
00:02:30,890 --> 00:02:38,360
‫ここまでで､ どこでも編集できること､ 可視指定子でインスタンスのみ､ またはデフォルトのみを選択できることを確認しました｡

34
00:02:38,360 --> 00:02:45,710
‫つまり､ お察しの通り､ インスタンスのみ､ あるいはデフォルトのみを選んで編集することができるのです｡

35
00:02:45,710 --> 00:02:48,140
‫では､ 30ツでもう一回作ろうか｡

36
00:02:48,140 --> 00:02:55,310
‫edit defaults only intというのを作って､ それを9という値で初期化し､ さらにedit

37
00:02:55,310 --> 00:03:00,020
‫instance only intというのを作ってみます｡

38
00:03:00,020 --> 00:03:02,600
‫そして､ この値を14とします｡

39
00:03:02,600 --> 00:03:11,900
‫そこで､ edit defaults only intはデフォルトのみ､ edit instance onlyはインスタンスのみ編集できるようにします｡

40
00:03:11,900 --> 00:03:20,360
‫この2つのアクセス・レベルの指定子について､ その名前を推測してみましょう｡

41
00:03:20,390 --> 00:03:23,150
‫さっそく､ ちょっとしたミニチャレンジをしてみてください｡

42
00:03:23,150 --> 00:03:26,330
‫ビデオを一時停止して､ これらを記入し､ 正しいかどうか確認してください｡

43
00:03:29,030 --> 00:03:32,570
‫さて､ これらはあなたのプロパティと編集のデフォルトになります｡

44
00:03:32,600 --> 00:03:35,600
‫唯一のエンドは､ おそらくあなたがそれを推測するために取得するつもりです｡

45
00:03:35,600 --> 00:03:44,060
‫Edit defaults only and for edit instance only int これはuプロパティマクロを与えて､ これはedit

46
00:03:44,060 --> 00:03:46,400
‫instance onlyにします｡

47
00:03:46,400 --> 00:03:47,810
‫だから､ かなり直感的にわかるんです｡

48
00:03:47,840 --> 00:03:54,530
‫先に進んでこれらをコンパイルし､ エディタに戻ってBP

49
00:03:54,530 --> 00:04:01,100
‫-- tankを開くと､ edit defaults

50
00:04:01,100 --> 00:04:10,790
‫only intが表示されます｡

51
00:04:10,970 --> 00:04:14,840
‫これで､ このグラフに3つの新しいスペシファイアが追加されたことになります｡

52
00:04:14,840 --> 00:04:21,020
‫default列のみ､ read only行にあるdefaultsのみを可視化しています｡

53
00:04:21,050 --> 00:04:26,450
‫そして､ それぞれの行にEdit defaults onlyとEdit instance onlyを設けています｡

54
00:04:26,600 --> 00:04:35,840
‫このグラフはすぐに埋まってしまいますが､ イベントグラフの列の右側には､ いくつかのスペースが空いていることにお気づきでしょう｡

55
00:04:35,840 --> 00:04:38,300
‫では､ 今からこれらについて少しお話ししましょう｡

56
00:04:38,300 --> 00:04:47,030
‫私はこのBP池槽にいますが､ 細部､ パネル､ そのスペックに応じて露出させたこれらの変数がすべてあります｡

57
00:04:47,060 --> 00:04:49,370
‫ここかインスタンスで見ることができます｡

58
00:04:49,370 --> 00:04:52,010
‫しかし､ イベントグラフのここを右クリックするとどうでしょう｡

59
00:04:52,040 --> 00:04:57,440
‫イベントグラフは､ 変数にアクセスし､ それを変更する可能性があるもう一つの場所です｡

60
00:04:57,440 --> 00:05:02,150
‫そのため､ どこかで編集と入力しても､ 編集がどこにも表示されません｡

61
00:05:02,150 --> 00:05:05,090
‫INT イベントグラフに公開されない｡

62
00:05:05,090 --> 00:05:06,860
‫私たちはそれにアクセスすることができないのです｡

63
00:05:06,860 --> 00:05:18,800
‫もうひとつ､ イベントグラフで公開できる仕様があり､ これはパネルのアクセシビリティの詳細を制御する仕様と連動させることができます｡

64
00:05:18,800 --> 00:05:23,150
‫そして､ そのうちの1つの変数をイベントグラフに公開したいと思います｡

65
00:05:23,150 --> 00:05:26,870
‫さて､ この中からどれを選んでもいいのですが､ 私はこのどこでも見えるものを選ぶことにします｡

66
00:05:26,870 --> 00:05:27,830
‫INT 現在､ U.

67
00:05:27,830 --> 00:05:32,630
‫プロパティマクロは複数の入力を取ることができるので､ どこでも見えるようにしています｡

68
00:05:32,630 --> 00:05:34,010
‫まだまだいけるぞ｡

69
00:05:34,010 --> 00:05:42,680
‫私はコンマを配置し､ 私はこの目に見えるどこかの端の露出をイベントグラフに与えるだろうに別の指定されたを追加したいと思います｡

70
00:05:42,680 --> 00:05:48,650
‫そこで､ 私が使うのは､ blueprint read, write, blueprint readです｡

71
00:05:48,650 --> 00:05:51,230
‫ライトは､ イベントグラフと関係があります｡

72
00:05:51,350 --> 00:05:54,500
‫詳細パネルの制御とは関係ありません｡

73
00:05:54,500 --> 00:05:57,140
‫このどこでも見えるというのは､ そういうことなんです｡

74
00:05:57,140 --> 00:06:02,570
‫Blueprint Rewriteは､ その名の通り､ 読み取りアクセスと書き込みアクセスを行うわけです｡

75
00:06:02,570 --> 00:06:04,240
‫では､ その様子をご覧ください｡

76
00:06:04,250 --> 00:06:11,960
‫これをコンパイルして､ イベントグラフのエディターで右クリックして､ visible anywhereと入力すると､ ここに戻ってきます｡

77
00:06:12,660 --> 00:06:18,630
‫ここでは､ get visible anywhere intとset visible anywhereの2種類のオプションを見ていきます｡

78
00:06:18,630 --> 00:06:21,330
‫INT 選択すれば､ どこでも見えるようになる｡

79
00:06:21,330 --> 00:06:27,690
‫INT ノードを取得し､ これは他のブループリント ノードと同様に､ C++ 変数を表します｡ このノードからドラッグすると､

80
00:06:27,690 --> 00:06:32,430
‫その値にアクセスして何かを行うことができます｡

81
00:06:32,430 --> 00:06:38,400
‫さて､ スクロールしてみると､ 灰色で表示されているアクターbegin､ overlap､

82
00:06:38,400 --> 00:06:43,500
‫event tickのノードがあることがわかります｡

83
00:06:43,500 --> 00:06:45,120
‫だから､ 私たちはここで何かできるはずです｡

84
00:06:45,120 --> 00:06:51,750
‫print stringノードを使いたいのですが､ ドラッグオフしてprint stringと入力すると､ ここに表示されます｡

85
00:06:51,750 --> 00:06:57,750
‫これはブループリントのファンクションノードで､ 文字列で呼ばれる入力を受け取ります｡

86
00:06:57,750 --> 00:07:02,250
‫今､ その上にカーソルを置くと､ 文字列の中にと書いてあり､ そのすぐ下に文字列と書いてあります｡

87
00:07:02,250 --> 00:07:05,940
‫このノードが入力パラメータとして受け付ける型です｡

88
00:07:05,940 --> 00:07:10,260
‫そして､ 見えるところにあるintは､ 文字列ではなく､ int32であることが分かっています｡

89
00:07:10,260 --> 00:07:17,400
‫しかし､ このノートの出力部分をクリックしてドラッグし､ マウスの左ボタンを離す前に入力部分に貼り付けると､

90
00:07:17,400 --> 00:07:23,370
‫整数を文字列に変換するというポップアップが表示され､ 離すと､

91
00:07:23,370 --> 00:07:34,650
‫整数から文字列型に変換する便利な変換ノードが表示されます｡

92
00:07:34,650 --> 00:07:36,480
‫私たちにとっては自動的なことなのです｡

93
00:07:36,510 --> 00:07:42,540
‫今､ 再生を押すと､ 値12が3回プリントされ､ それが数秒しか続かないのがわかります｡

94
00:07:42,540 --> 00:07:44,430
‫それがprint stringの動作です｡

95
00:07:44,430 --> 00:07:51,330
‫さて､ なぜ3回見るかというと､ この世界には3種類のBP池槽のインスタンスがあるからです｡

96
00:07:51,330 --> 00:07:54,900
‫世界にどれだけ引きずり込んだかにもよりますが､ その数だけ見ることができます｡

97
00:07:54,900 --> 00:08:00,630
‫なぜなら､ これらの個々の事例では､ ゲームの最初にビギンプレーがコールされるからです｡

98
00:08:00,630 --> 00:08:08,220
‫だから､ 混乱を避けるために､ 他の2つのインスタンスを削除して､ この世界にBeep Pond Tankのインスタンスを1つだけ残すことにしたんだ｡

99
00:08:08,220 --> 00:08:15,270
‫だから､ 私は1つしか持っていないし､ もう一度再生を押すと､ 12が一度だけ画面に印刷されるのを見ることができます｡

100
00:08:15,270 --> 00:08:21,840
‫これは､ int 型の可視データに対する読み取りアクセスですが､ 書き込みアクセスも可能であることを確認しました｡

101
00:08:21,840 --> 00:08:24,960
‫つまり､ イベントグラフのここからその値を設定することができるのです｡

102
00:08:24,960 --> 00:08:32,220
‫右クリックして､ もう一度visible anywhere intと入力すると､ set visible anywhere

103
00:08:32,220 --> 00:08:42,900
‫intというセッターノードができ､ 他のノードから値を渡したり､ この小さなテキストボックスで66という値をハードコードすることができます｡

104
00:08:42,900 --> 00:08:48,660
‫そして､ begin playからの実行の流れがこのノードに到達すると同時に､ セッターノードがvisible

105
00:08:48,660 --> 00:08:54,480
‫anywhereに書き込み､ その値を66に設定することになるのです｡

106
00:08:54,480 --> 00:08:56,610
‫もちろん､ これをまたプリントアウトすることも可能です｡

107
00:08:56,610 --> 00:08:58,590
‫そこで､ print stringを使うことにします｡

108
00:09:00,070 --> 00:09:05,700
‫また､ print stringに渡される値には､ visible anywhere intの値が欲しいです｡

109
00:09:05,710 --> 00:09:07,720
‫今､ 私は2つの方法のいずれかでこれを行うことができます｡

110
00:09:07,720 --> 00:09:16,990
‫セッターにはリターンノードがあるので､ 値を設定した後､ その値を返せば､ そのまま文字列の印刷に使えるようになるのです｡

111
00:09:16,990 --> 00:09:23,770
‫もう一つの方法は､ 右クリックして､ 任意の場所で可視化し､ getノードを使用して､ このノードの値をprint文字列にフックすることで､

112
00:09:23,770 --> 00:09:29,470
‫全く同じことができます｡

113
00:09:29,470 --> 00:09:30,700
‫だから､ それは必要ない｡

114
00:09:30,700 --> 00:09:31,960
‫そのノードを削除します｡

115
00:09:31,960 --> 00:09:38,680
‫そして今､ 私がゲームをするときに期待しているのは､ まずvisible anywhere

116
00:09:38,680 --> 00:09:47,320
‫intの値が12から始まり､ その値を66に設定した後､ 66という値が画面にプリントアウトされることです｡

117
00:09:47,320 --> 00:09:50,560
‫では､ 再生を押してみると､ 12と66が表示されます｡

118
00:09:50,560 --> 00:09:52,540
‫今は順番が逆になっているように見えますが｡

119
00:09:52,540 --> 00:09:56,170
‫これは､ print stringがより新しいメッセージを上に追加するためです｡

120
00:09:56,170 --> 00:09:58,270
‫だから､ それが普通の行動なんです｡

121
00:09:58,270 --> 00:09:59,110
‫なるほど､ 素晴らしい｡

122
00:09:59,110 --> 00:10:02,800
‫というわけで､ 今すぐにでも変数の設計図を読ませることができることがわかりました｡

123
00:10:02,800 --> 00:10:07,210
‫また､ イベントグラフから設定するかどうかを制御することもできます｡

124
00:10:07,210 --> 00:10:13,450
‫そこで､ 別の変数を公開し､ ブループリントから取得できるようにしますが､ ここで編集して設定することはできません｡

125
00:10:13,450 --> 00:10:20,080
‫INT イベントグラフでアクセスはできるが､ 設定や書き込みはできないようにするために､ カンマを追加して､

126
00:10:20,080 --> 00:10:22,930
‫今これに指定したものを追加します｡

127
00:10:22,930 --> 00:10:30,520
‫指定時間はブループリントの読み取り専用なので､ int型のどこでも編集はブループリントの読み取り専用になりました｡

128
00:10:30,520 --> 00:10:38,470
‫デフォルトとインスタンスの両方で､ 詳細パネルではまだ編集可能ですが､ イベントグラフでは読み取り専用です｡

129
00:10:38,470 --> 00:10:44,080
‫では､ コンパイルしてみましょう｡ エディターに戻って､ イベントグラフを右クリックして､ 「edit anywhere」と入力し､

130
00:10:44,080 --> 00:10:47,080
‫チェックしてみてください｡

131
00:10:47,080 --> 00:10:53,050
‫get edit anywhere endはありますが､ set edit anywhere intはありません｡ ブループリントの読み取り専用なので､

132
00:10:53,050 --> 00:10:55,240
‫書き込むことができません｡

133
00:10:55,240 --> 00:10:56,650
‫ということで､ 選択することにします｡

134
00:10:56,650 --> 00:10:57,910
‫どこでも編集はこちら

135
00:10:57,910 --> 00:11:03,250
‫INT その気になれば､ print stringノードを使ってその値を見ることもできますね｡

136
00:11:03,280 --> 00:11:04,360
‫その必要はありません｡

137
00:11:04,360 --> 00:11:05,680
‫その方法はすでに知っています｡

138
00:11:05,680 --> 00:11:09,760
‫この変数には書き込めないということを実証しているだけです｡

139
00:11:09,790 --> 00:11:13,630
‫それでは､ これらのノードをハイライトして削除します｡

140
00:11:13,630 --> 00:11:15,880
‫これで､ グラフは完成です｡

141
00:11:15,880 --> 00:11:24,550
‫変数がデフォルトでのみ見えるようにできること､ デフォルトのみ､ またはインスタンスのみ編集可能にできることを学びました｡

142
00:11:24,550 --> 00:11:27,820
‫だから､ C++側で完全にコントロールできるんです｡

143
00:11:27,850 --> 00:11:34,240
‫また､ これらの変数をイベントグラフに公開し､ ブループリントのリードオンリー指定子やブループリントのリードライト指定子を使って､

144
00:11:34,240 --> 00:11:38,650
‫リードオンリーやリードライトを指定できることも確認しました｡

145
00:11:38,650 --> 00:11:40,180
‫そこで､ 今度は挑戦です｡

146
00:11:40,180 --> 00:11:43,330
‫前回の講義では､ 変数を作成しました｡

147
00:11:43,330 --> 00:11:45,310
‫フロートを作って､ スピードと名付けた｡

148
00:11:45,340 --> 00:11:46,960
‫今度はその変数を取るのです｡

149
00:11:46,960 --> 00:11:52,180
‫最後のセクションで作成し､ イベントグラフでアクセスを制御します｡

150
00:11:52,180 --> 00:12:00,520
‫そこで､ 学習した新しい指定子を使ってイベントグラフに公開し､ この読み書きのアクセスをテストすることにします｡

151
00:12:00,520 --> 00:12:07,000
‫print stringノードを使用することで､ その値を確認することができ､ もし変更した場合は､ 変更したことを自分で証明することができます｡

152
00:12:07,000 --> 00:12:12,520
‫ですから､ 変数のブループリントを正しく読ませるなら､ setノードで変更し､ print stringノードを使って､

153
00:12:12,520 --> 00:12:15,880
‫イベントbegin playでその値を確認してみてください｡

154
00:12:15,880 --> 00:12:22,120
‫ブループリントを読み取り専用にした場合は､ 単純に値を取得してprint stringでその値を表示することができます｡

155
00:12:22,120 --> 00:12:29,590
‫そこで､ カスタム変数に正しい指定を追加し､ print stringを使用してイベントグラフでアクセスをテストしてください｡

156
00:12:29,590 --> 00:12:31,780
‫ビデオを一時停止して､ これを試してみてください｡

157
00:12:34,570 --> 00:12:34,990
‫なるほど｡

158
00:12:34,990 --> 00:12:40,330
‫スピード変数までスクロールして､ スピード変数はedit anywhereで､ blueprint

159
00:12:40,330 --> 00:12:41,620
‫readにします｡

160
00:12:41,620 --> 00:12:44,530
‫なるほど､ イベントグラフの中から変更できるんですね｡

161
00:12:44,530 --> 00:12:49,110
‫そこで､ blueprint､ read､ writeと単純にcompileを追加することにします｡

162
00:12:49,120 --> 00:12:55,990
‫そこで､ BP池の水槽に戻り､ 今､ speedと入力すると､ このためのゲッターとセッターが表示されます｡

163
00:12:56,110 --> 00:12:58,180
‫だから､ セットスピードを使うんです｡

164
00:12:58,330 --> 00:13:00,940
‫Begin Playからその値を設定することにします｡

165
00:13:00,940 --> 00:13:01,930
‫では､ これをフックしてみましょう｡

166
00:13:01,930 --> 00:13:09,640
‫そして､ 値には900を入力し､ セットノートからドラッグオフすれば､ print stringと入力できます｡

167
00:13:09,640 --> 00:13:13,780
‫次に､ 出力ノードをクリックしてドラッグし､ 文字列にフックします｡

168
00:13:13,780 --> 00:13:18,370
‫再生ボタンを押すと､ 900と表示されますね｡  0.

169
00:13:18,370 --> 00:13:19,960
‫それは､ これが浮き輪だからです｡

170
00:13:19,960 --> 00:13:24,190
‫そのため､ 最初の小数点を表示するような礼儀があります｡

171
00:13:24,190 --> 00:13:26,680
‫そのため､ このような素晴らしい機能が組み込まれています｡

172
00:13:26,680 --> 00:13:31,630
‫速度変数の小数点以下の桁が1つずつ表示されるんだけど｡

173
00:13:31,630 --> 00:13:36,550
‫まとめると､ 新しいプロパティマクロの指定子をいくつか追加で学んだということです｡

174
00:13:36,580 --> 00:13:41,650
‫visible defaults only､ edit defaults only､ edit instance onlyを学びました｡

175
00:13:41,650 --> 00:13:48,550
‫そして､ Blueprint､ read､ write､ Blueprint Readを使用して､ イベントグラフのread writeアクセスを制御する方法も学びました｡

176
00:13:48,550 --> 00:14:01,060
‫C++プログラマーだけが､ ブループリントで何が公開され､ 何が変更可能かを大きく制御でき､ コースのこのセクションを通してこれらを使用することになります｡

177
00:14:01,210 --> 00:14:05,620
‫そして､ アンリアル・エンジン開発者としてのキャリアを通じて､ それらを使い続けることができます｡

178
00:14:06,130 --> 00:14:07,510
‫それでは､ 次回の講義でお会いしましょう｡

