﻿1
00:00:04,330 --> 00:00:05,110
‫こんにちは､ ようこそ｡

2
00:00:05,110 --> 00:00:15,010
‫この講義では､ トリガーコンポーネントが､ 空いたスペースがあるときにロックを解除するように印刷するようにします｡

3
00:00:15,010 --> 00:00:17,830
‫そしてまた取り出せば､ またロックがかかる｡

4
00:00:17,830 --> 00:00:23,170
‫そのために､ アクターが許容できるかどうかを判断する機能を､

5
00:00:23,170 --> 00:00:26,320
‫別の関数に分離しています｡

6
00:00:26,320 --> 00:00:29,320
‫そして､ 4つのループの中でアーリーリターンを学んでいくのです｡

7
00:00:29,320 --> 00:00:31,120
‫そのために､ 飛び込んでみよう｡

8
00:00:31,920 --> 00:00:36,900
‫このように､ テック・コンポーネントのコードの塊は､ 私にとってはすでに関数のように感じられるようになってきました｡

9
00:00:36,900 --> 00:00:45,420
‫基本的には､ アクターがあれば､ そのアクターを取得し､ トリガー・コンポーネントに移動するための関数です｡

10
00:00:46,230 --> 00:00:49,680
‫そして､ プライベートセクションの下に､ そのような機能を作る｡

11
00:00:49,680 --> 00:00:51,850
‫さて､ その戻り値の型はどうあるべきでしょうか？

12
00:00:51,870 --> 00:00:59,690
‫まあ､ Aアクターポインターであるべきで､ 受け入れ可能なアクターがない場合は常にヌルポインターにすることができると思います｡

13
00:00:59,700 --> 00:01:05,190
‫そこで､ 次にこのget acceptable actorを空カッコで呼び出すことができます｡

14
00:01:05,190 --> 00:01:06,510
‫何も与えなくていいんです｡

15
00:01:06,510 --> 00:01:12,420
‫そして､ 機能を変更しないので､ constにすることができます｡

16
00:01:12,450 --> 00:01:16,350
‫これをCPPファイル上で実装してみましょう｡

17
00:01:16,350 --> 00:01:27,030
‫インデントして､ you trigger componentのコロン､ コロンをつけて､ セミコロンを中括弧に置き換えます｡

18
00:01:27,570 --> 00:01:39,640
‫そして､ 私たちが欲しいコードは､ 基本的にチック・コンポーネントの内容です｡ ただし､ 私たちがしたくないことは､ ここでアクターのロックを解除したことをログに記録することだけです｡

19
00:01:39,660 --> 00:01:47,280
‫このアクターを見つけた場合､ 基本的にこのアクターを返すようにしたいのです｡

20
00:01:47,280 --> 00:01:48,870
‫そこで､ 2つの方法を考えてみました｡

21
00:01:48,870 --> 00:02:00,840
‫関数の最初にアクターポインターがあり､ これがリターンアクターになります｡

22
00:02:00,840 --> 00:02:04,380
‫だから､ 戻るという役者がいないんです｡

23
00:02:04,380 --> 00:02:09,360
‫しかし､ forループを経て､ 最終的に許容できるタグを持つアクターが見つかれば､

24
00:02:09,360 --> 00:02:17,940
‫「あれ､ 戻りアクターは､ 実は配列の中で見つけたアクターポインターを指すはずだ」と言うことができます｡

25
00:02:17,940 --> 00:02:22,590
‫そして､ forループが終了した後､ すべてのアクターを経験しました｡

26
00:02:22,590 --> 00:02:28,920
‫正しい型なので､ 先に進んでreturn actor変数を返すことができます｡

27
00:02:29,400 --> 00:02:30,390
‫それでいいんです｡

28
00:02:30,390 --> 00:02:35,400
‫しかし､ これでは変数を作る必要があり､ また､ すでに許容できるアクターが見つかっている場合でも､

29
00:02:35,400 --> 00:02:38,040
‫forループ全体を走らせる必要があります｡

30
00:02:38,460 --> 00:02:42,180
‫そこで､ より良い方法として､ アーリーリターンを使用することです｡

31
00:02:42,180 --> 00:02:48,240
‫そして､ このようなことは､ 以前にもグラブ・ア・シーピーで行ったことがあるのです｡

32
00:02:48,240 --> 00:02:55,260
‫物理ハンドルがヌルポインタに等しい場合は､ 戻り､ 残りのtickコンポーネントは実行する必要がない｡

33
00:02:55,260 --> 00:03:00,180
‫同じような効率性は､ forループの中でも発揮されます｡

34
00:03:00,180 --> 00:03:06,960
‫ではどうするかというと､ 許容できるアクターが見つかったら､ そのままリターンアクターにします｡

35
00:03:06,960 --> 00:03:13,500
‫文字通り､ このforループで見つけたばかりのポインタを返しているので､ 残りのforループは実行する必要がない｡

36
00:03:13,800 --> 00:03:20,340
‫しかし､ もしforループの最後まで行って､ 何も見つからなかったら､ 何も返さなかったら､ returnはforループを止めて､

37
00:03:20,340 --> 00:03:23,970
‫関数から抜けることになる｡

38
00:03:23,970 --> 00:03:28,050
‫しかし､ 最後まで行くと､ デフォルトで何かを返す必要があります｡

39
00:03:28,410 --> 00:03:31,860
‫ここで､ NULLポインタを返せばいいのです｡

40
00:03:31,860 --> 00:03:33,450
‫つまり､ これがデフォルト値です｡

41
00:03:33,450 --> 00:03:35,670
‫forループを全部回ったということです｡

42
00:03:35,670 --> 00:03:38,040
‫許容できる俳優がいないことがわかりました｡

43
00:03:38,040 --> 00:03:40,410
‫重なっている役者は皆無です｡

44
00:03:41,300 --> 00:03:42,830
‫正しいタグで｡

45
00:03:42,830 --> 00:03:45,230
‫そこで､ NULLポインタを返します｡

46
00:03:45,230 --> 00:03:51,260
‫つまり､ この冗長なアクター変数を削除することができるのです｡

47
00:03:51,260 --> 00:03:53,510
‫そして､ これが実にきれいに読めるのです｡

48
00:03:53,510 --> 00:03:58,070
‫重なっているアクターを取得し､ その上でフルループしているのです｡

49
00:03:58,070 --> 00:04:02,780
‫各アクターをテストして､ タグがあるかどうか､ 許容できるタグがあるかどうか｡

50
00:04:02,780 --> 00:04:04,550
‫もし､ そうなら､ そこでストップです｡

51
00:04:04,550 --> 00:04:05,720
‫その1つを返します｡

52
00:04:05,720 --> 00:04:08,330
‫どれも持っていない場合は､ ヌルポインタを返します｡

53
00:04:08,330 --> 00:04:11,780
‫では､ 役者が見つかったらログにチャレンジしてみましょう｡

54
00:04:11,780 --> 00:04:14,570
‫そこで､ tickコンポーネントの中で私たちの関数を呼び出します｡

55
00:04:14,570 --> 00:04:21,920
‫ポインタがNULLかどうかをチェックし､ if文とelse文を使ってアクターがあるかどうか､ 両方のケースでログを取ります｡

56
00:04:21,920 --> 00:04:23,540
‫ビデオを一時停止して､ 試してみてください｡

57
00:04:26,460 --> 00:04:26,850
‫KAYE.

58
00:04:26,850 --> 00:04:27,850
‫お帰りなさい｡

59
00:04:27,870 --> 00:04:30,120
‫では､ 技術部品に移りましょう｡

60
00:04:30,120 --> 00:04:35,490
‫これから行うのは､ アクターポインターという変数を作成し､

61
00:04:35,490 --> 00:04:40,620
‫これをアクターとすることです｡

62
00:04:40,650 --> 00:04:47,220
‫それから､ if actor not equal to null

63
00:04:47,220 --> 00:04:56,520
‫pointer を実行し､ 本文で､ u log unlocking を実行し､ else

64
00:04:56,520 --> 00:05:01,950
‫で､ 今度は re locking を実行します｡ これは､

65
00:05:01,950 --> 00:05:12,750
‫トリガーコンポーネントと move it together に持たせたい動作です｡

66
00:05:12,750 --> 00:05:13,860
‫では､ それをコンパイルしてみましょう｡

67
00:05:13,860 --> 00:05:15,960
‫では､ さっそく再生を押してみましょう｡

68
00:05:15,990 --> 00:05:19,620
‫ガーゴイルがいないので､ リロックしているのがわかりますね｡

69
00:05:19,650 --> 00:05:21,660
‫ガーゴイルを拾って連れてきてください｡

70
00:05:21,660 --> 00:05:22,560
‫そして､ そこにあるのは

71
00:05:22,560 --> 00:05:27,900
‫今､ ロックが解除されましたそれを取り出すと､ ロックが解除され､ ロックが解除されました｡

72
00:05:27,900 --> 00:05:28,380
‫完璧です｡

73
00:05:28,380 --> 00:05:30,000
‫中に入っても､ 何も起こらない｡

74
00:05:30,000 --> 00:05:31,080
‫再ロックしているだけです｡

75
00:05:31,230 --> 00:05:38,850
‫というわけで､ 無事､ トリガー部品に何かが入っているかどうかを調べることができました｡

76
00:05:38,850 --> 00:05:40,680
‫あとは､ それを何かで動かすだけです｡

77
00:05:40,680 --> 00:05:42,750
‫そして､ それは次の講義のテーマとなる｡

78
00:05:42,750 --> 00:05:43,500
‫現地でお会いしましょう｡

