﻿1
00:00:04,260 --> 00:00:05,340
‫Chào mừng trở lại.

2
00:00:05,700 --> 00:00:11,550
‫Bây giờ chúng tôi có một chế độ trò chơi và chúng tôi muốn sử dụng chế độ trò chơi để xác định thời điểm chúng tôi có thể bắt đầu trò chơi.

3
00:00:11,580 --> 00:00:17,700
‫Bây giờ, một số trò chơi có độ trễ hoặc đồng hồ đếm ngược bắt đầu khi trò chơi bắt đầu.

4
00:00:17,700 --> 00:00:23,460
‫Và sau một khoảng thời gian nhất định, sau đó người chơi được phép di chuyển nhân vật hoặc trong trường hợp của chúng

5
00:00:23,460 --> 00:00:25,450
‫tôi là xe tăng trên khắp thế giới.

6
00:00:25,470 --> 00:00:28,500
‫Vì vậy, chúng tôi sẽ thực hiện điều đó trong video này.

7
00:00:28,530 --> 00:00:35,520
‫Điều này sẽ liên quan đến việc tắt đầu vào trước tiên để chúng tôi không thể di chuyển xung quanh khi trò chơi bắt đầu lần đầu tiên và

8
00:00:35,520 --> 00:00:41,860
‫sau đó chúng tôi sẽ đặt bộ đếm thời gian và sau một khoảng thời gian nhất định, sau đó chúng tôi có thể bật đầu vào.

9
00:00:41,880 --> 00:00:47,870
‫Vì vậy, hãy quay lại điều chỉnh chế độ chơi xe tăng và thêm một vài thứ ở đây.

10
00:00:47,880 --> 00:00:54,030
‫Đầu tiên, tôi muốn thêm một phao trong khoảng thời gian sẽ trôi qua khi trò chơi bắt đầu trước khi chúng ta có

11
00:00:54,030 --> 00:00:55,380
‫thể bắt đầu di chuyển.

12
00:00:55,410 --> 00:01:03,120
‫Vì vậy, float này sẽ được gọi là độ trễ bắt đầu và tôi sẽ khởi tạo nó thành ba điểm F để chúng ta phải đợi

13
00:01:03,120 --> 00:01:06,800
‫3 giây trước khi chúng ta có thể bắt đầu trò chơi.

14
00:01:06,810 --> 00:01:12,420
‫Bây giờ, ngay sau khi trò chơi bắt đầu, tôi muốn bắt đầu bộ đếm thời gian này, có nghĩa là tôi muốn một chức năng sẽ

15
00:01:12,420 --> 00:01:16,510
‫bắt đầu bộ đếm thời gian này và tôi cũng sẽ đặt nó thành một chức năng riêng tư.

16
00:01:16,530 --> 00:01:21,180
‫Tôi sẽ làm cho điều này một hàm void được gọi là bắt đầu trò chơi điều khiển.

17
00:01:21,210 --> 00:01:25,200
‫Bây giờ tôi có thể thực hiện bắt đầu trò chơi tay cầm ở chế độ chơi điều chỉnh xe tăng.

18
00:01:25,470 --> 00:01:28,320
‫Bước xuống đây để bắt đầu chơi.

19
00:01:28,770 --> 00:01:36,090
‫Bây giờ tôi sẽ không quên thêm tên lớp chế độ chơi xe tăng điều chỉnh ở đây và bây giờ tôi có chức năng bắt đầu trò

20
00:01:36,090 --> 00:01:36,930
‫chơi tay cầm.

21
00:01:37,170 --> 00:01:40,410
‫Bây giờ nơi để gọi điều này sẽ là Bắt đầu chơi.

22
00:01:40,620 --> 00:01:43,590
‫Vì Begin Play được gọi khi bắt đầu trò chơi.

23
00:01:43,590 --> 00:01:47,180
‫Vì vậy, tôi sẽ gọi trò chơi xử lý, bắt đầu ở đây và bắt đầu chơi.

24
00:01:47,190 --> 00:01:52,110
‫Và vì chúng tôi đang làm một số việc ở đây khi bắt đầu trò chơi, trong đó thiết lập xe

25
00:01:52,110 --> 00:01:58,050
‫tăng và điều chỉnh xe tăng, người chơi, bộ điều khiển các biến, tôi muốn chuyển những thứ này vào phần bắt đầu trò chơi xử lý.

26
00:01:58,050 --> 00:02:03,600
‫Vì vậy, tôi sẽ chuyển chúng ngay xuống phần bắt đầu trò chơi tay cầm và theo cách đó bộ điều khiển của người chơi xe tăng và

27
00:02:03,600 --> 00:02:08,940
‫điều chỉnh xe tăng sẽ được thiết lập vì chúng tôi đang gọi trò chơi tay cầm bắt đầu ở đây và bắt đầu chơi.

28
00:02:08,940 --> 00:02:15,990
‫Vì vậy, đây là nơi tôi muốn bắt đầu đồng hồ đếm ngược mà sau đó chúng ta có thể bật tính năng nhập của người dùng.

29
00:02:15,990 --> 00:02:21,480
‫Bây giờ trước khi chúng ta bắt đầu hẹn giờ, tôi sẽ tắt đầu vào để chúng ta chưa thể di chuyển xe tăng.

30
00:02:21,690 --> 00:02:24,420
‫Và điều đó sẽ yêu cầu chức năng của chúng tôi.

31
00:02:24,420 --> 00:02:29,670
‫Chúng tôi đã đặt ở đây trong các xe tăng điều chỉnh, bộ điều khiển trình phát được gọi là trạng thái kích hoạt thiết lập trình phát.

32
00:02:29,670 --> 00:02:33,690
‫Và điều đó có nghĩa là tôi sẽ sử dụng xe tăng điều chỉnh, bộ điều khiển trình phát.

33
00:02:33,690 --> 00:02:38,400
‫Và nếu tôi định sử dụng bộ điều khiển trình phát của xe tăng điều chỉnh, thì bạn nên đảm bảo rằng nó hợp lệ.

34
00:02:38,400 --> 00:02:46,200
‫Vì vậy, tôi sẽ nói nếu điều chỉnh xe tăng, người chơi, bộ điều khiển và nếu chúng ta tiếp cận bên trong câu

35
00:02:46,200 --> 00:02:57,570
‫lệnh if này, thì tôi có thể lấy xe tăng điều chỉnh, bộ điều khiển trình phát và trạng thái kích hoạt thiết lập cuộc gọi của trình phát và chuyển sang trạng thái sai.

36
00:02:57,690 --> 00:03:00,720
‫Và như vậy xe tăng của chúng ta sẽ không thể di chuyển được.

37
00:03:00,720 --> 00:03:06,780
‫Và tôi nhìn thấy các ô màu đỏ và đó là bởi vì tôi đã nói xe tăng, bộ điều khiển người chơi chứ không phải điều chỉnh

38
00:03:06,780 --> 00:03:07,380
‫xe tăng.

39
00:03:07,830 --> 00:03:11,250
‫Vì vậy, chính tả nó một cách chính xác bây giờ tôi không có lỗi ở đó.

40
00:03:11,250 --> 00:03:13,690
‫Vì vậy, tiếp theo chúng ta cần bắt đầu hẹn giờ.

41
00:03:13,710 --> 00:03:20,850
‫Bây giờ chúng ta biết rằng bộ định thời liên quan đến việc sử dụng một tay cầm bộ định thời F và chúng ta thực sự có thể tạo một

42
00:03:20,850 --> 00:03:25,110
‫bộ điều khiển bộ định thời F hơn là có một biến thành viên thuộc về lớp.

43
00:03:25,200 --> 00:03:31,470
‫Vì vậy, tôi sẽ tiếp tục và làm điều đó và tôi sẽ gọi trình điều khiển này kích hoạt bộ đếm thời gian.

44
00:03:31,800 --> 00:03:38,340
‫Và tiếp theo, chúng ta cần đặt bộ hẹn giờ ngay bây giờ cho chức năng gọi lại cho bộ hẹn giờ của chúng ta,

45
00:03:38,340 --> 00:03:45,390
‫tôi muốn sử dụng trạng thái bật trình phát đã đặt, nhưng đặt trạng thái kích hoạt trình phát là một hàm yêu cầu đầu vào kiểu boolean.

46
00:03:45,990 --> 00:03:51,900
‫Bây giờ chúng ta chưa thấy cách đặt bộ đếm thời gian bằng cách sử dụng lệnh gọi lại yêu cầu các tham số đầu vào.

47
00:03:51,900 --> 00:03:56,190
‫Điều này sẽ liên quan đến một khái niệm mới được gọi là đại biểu bộ đếm thời gian.

48
00:03:56,190 --> 00:03:59,310
‫Vì vậy, chúng ta hãy xem xét hệ thống hẹn giờ của Unreal Engine.

49
00:03:59,310 --> 00:04:07,080
‫Một lần nữa, chúng ta biết rằng có một trình quản lý hẹn giờ thế giới quản lý bộ hẹn giờ của chúng ta và nó có chức năng đặt hẹn giờ.

50
00:04:07,170 --> 00:04:11,280
‫Bây giờ có nhiều quá tải của chức năng hẹn giờ đặt.

51
00:04:11,370 --> 00:04:13,410
‫Chúng tôi đã thấy một trong số họ rồi.

52
00:04:13,440 --> 00:04:16,710
‫Bây giờ tôi sẽ nói về một phiên bản khác của chức năng này.

53
00:04:16,710 --> 00:04:24,570
‫Và phiên bản này yêu cầu tay cầm hẹn giờ, tốc độ hẹn giờ hoặc thời gian trễ mà chúng ta phải đợi trước khi chức năng

54
00:04:24,570 --> 00:04:26,760
‫gọi lại của chúng ta được gọi.

55
00:04:26,760 --> 00:04:32,550
‫Và thay vì lấy trực tiếp địa chỉ của một hàm gọi lại, nó có thể lấy một thứ gọi là đại biểu bộ

56
00:04:32,550 --> 00:04:33,270
‫định thời.

57
00:04:33,270 --> 00:04:40,440
‫Đây là một cấu trúc của bộ định thời kiểu F, cho phép chúng ta tạo một đối tượng có thể liên kết một hàm trực

58
00:04:40,440 --> 00:04:41,490
‫tiếp với nó.

59
00:04:41,490 --> 00:04:45,600
‫Và các đại biểu bộ định thời có thể ràng buộc các hàm yêu cầu tham số đầu vào.

60
00:04:45,600 --> 00:04:53,370
‫Bây giờ chúng ta có thể tạo một biến ủy nhiệm bộ định thời EF và khởi tạo nó bằng cách sử dụng hàm create you object từ

61
00:04:53,370 --> 00:04:55,080
‫f bộ định thời gian.

62
00:04:55,110 --> 00:05:00,990
‫Thao tác này sẽ tạo một đại biểu bộ đếm thời gian mới và khởi tạo nó dựa trên những gì chúng ta chuyển vào trong dấu ngoặc đơn.

63
00:05:00,990 --> 00:05:03,810
‫Điều này sẽ lấy một đối tượng người dùng là của.

64
00:05:03,860 --> 00:05:08,110
‫Tất nhiên, lớp mà hàm gọi lại của chúng ta tồn tại trên đó.

65
00:05:08,120 --> 00:05:15,110
‫Và tiếp theo, nó lấy địa chỉ của chính hàm gọi lại, theo sau là bất kỳ giá trị đầu vào nào mà chúng ta muốn

66
00:05:15,110 --> 00:05:18,450
‫chuyển vào lệnh gọi lại của mình khi nó được gọi.

67
00:05:18,470 --> 00:05:24,830
‫Từ đó, chúng ta có thể gọi bộ hẹn giờ từ trình quản lý bộ hẹn giờ thế giới và sử dụng quá tải cần một đại biểu bộ

68
00:05:24,830 --> 00:05:25,450
‫hẹn giờ.

69
00:05:25,460 --> 00:05:32,300
‫Quá tải này yêu cầu chính bộ xử lý bộ hẹn giờ, bộ định thời, tốc độ phát hoặc một phao xác định độ trễ trước khi

70
00:05:32,300 --> 00:05:38,630
‫lệnh gọi lại của chúng ta sẽ được gọi và sau đó là một boolean để xác định xem bộ hẹn giờ của chúng

71
00:05:38,630 --> 00:05:43,310
‫ta có lặp lại hay không để chúng ta biết cách tạo F hẹn giờ đại biểu.

72
00:05:43,310 --> 00:05:49,610
‫Vì vậy, tôi muốn bạn tạo một cái trong chức năng bắt đầu trò chơi tay cầm bên trong câu lệnh if mới của chúng tôi.

73
00:05:49,610 --> 00:05:54,200
‫Vì vậy, hãy tạo một đại biểu bộ định thời f cục bộ và sử dụng đại biểu bộ định thời f.

74
00:05:54,200 --> 00:05:55,640
‫Tạo đối tượng cho bạn.

75
00:05:55,640 --> 00:06:01,610
‫Bây giờ chúng ta sẽ cần chuyển vào một đối tượng người dùng và thông thường chúng ta đã sử dụng đối tượng này làm đối tượng

76
00:06:01,610 --> 00:06:05,870
‫người dùng, nhưng chức năng mà chúng ta muốn gọi là tồn tại trên bộ điều khiển trình phát.

77
00:06:05,870 --> 00:06:12,320
‫Vì vậy, chuyển vào là bộ điều khiển trình phát xe tăng điều chỉnh có thể thay đổi làm đầu vào đầu tiên sẽ là đối tượng

78
00:06:12,320 --> 00:06:18,890
‫người dùng và chức năng gọi lại sẽ được đặt trạng thái kích hoạt trình phát mà chức năng chúng tôi đã thêm vào bộ điều khiển trình

79
00:06:18,890 --> 00:06:20,300
‫phát tùy chỉnh của mình.

80
00:06:20,300 --> 00:06:25,730
‫Đừng quên địa chỉ của toán tử và là đầu vào thứ ba, chúng tôi sẽ chuyển giá trị.

81
00:06:25,730 --> 00:06:32,330
‫Đúng, đây là những gì sẽ được chuyển sang trạng thái bật trình phát đã đặt khi cuộc gọi lại của chúng tôi được gọi vào cuối

82
00:06:32,330 --> 00:06:33,590
‫bộ đếm thời gian.

83
00:06:33,590 --> 00:06:36,710
‫Vì vậy, hãy tạm dừng video và thử ngay bây giờ.

84
00:06:39,560 --> 00:06:46,580
‫Vì vậy, ngay dưới tay cầm bộ đếm thời gian của chúng tôi, tôi sẽ tạo một đại biểu bộ hẹn giờ F cục bộ và tôi

85
00:06:46,580 --> 00:06:50,540
‫sẽ gọi đại biểu kích hoạt bộ đếm thời gian cho trình phát này.

86
00:06:51,140 --> 00:06:51,710
‫Không sao đâu.

87
00:06:51,710 --> 00:06:53,030
‫Nếu bạn đặt tên cho nó một cái gì đó khác.

88
00:06:53,030 --> 00:07:00,200
‫Bây giờ tôi sẽ khởi tạo điều này bằng cách sử dụng bộ đếm thời gian f, ủy quyền, tạo đối tượng cho bạn.

89
00:07:00,470 --> 00:07:06,590
‫Và điều này đầu tiên sẽ lấy một đối tượng người dùng và đó sẽ là bộ điều khiển người chơi xe tăng điều chỉnh của chúng tôi.

90
00:07:06,590 --> 00:07:11,300
‫Vì vậy, tôi sẽ nói bộ điều khiển trình phát xe tăng điều chỉnh là đầu vào đầu tiên.

91
00:07:11,390 --> 00:07:19,250
‫Và thứ hai, chúng tôi cần chức năng gọi lại của mình và đó sẽ là một trình phát xe tăng điều chỉnh,

92
00:07:19,910 --> 00:07:23,360
‫trạng thái kích hoạt trình phát bộ điều khiển.

93
00:07:23,360 --> 00:07:30,290
‫Và tôi không thể quên, tôi cần địa chỉ của toán tử cho địa chỉ hàm này và giá trị mà

94
00:07:30,290 --> 00:07:34,670
‫tôi muốn chuyển vào hàm gọi lại này sẽ đúng theo cách đó.

95
00:07:34,670 --> 00:07:41,120
‫Vào cuối thời gian trễ, khi lệnh gọi lại này được gọi là true sẽ là giá trị được chuyển vào

96
00:07:41,120 --> 00:07:42,290
‫hàm gọi lại.

97
00:07:42,290 --> 00:07:48,770
‫Bây giờ tôi đã sẵn sàng để gọi đặt bộ hẹn giờ, có nghĩa là tôi cần gọi cho người quản lý bộ hẹn giờ thế giới.

98
00:07:48,950 --> 00:07:51,530
‫Và từ đó tôi có thể gọi đặt hẹn giờ.

99
00:07:52,070 --> 00:07:59,030
‫Và quá tải chức năng mà chúng ta đang sử dụng đầu tiên sẽ có một tay cầm hẹn giờ và đó sẽ là tay cầm hẹn

100
00:07:59,060 --> 00:08:00,560
‫giờ kích hoạt trình phát.

101
00:08:00,590 --> 00:08:04,370
‫Đầu vào tiếp theo mà tôi sẽ chuyển vào sẽ là người được ủy quyền.

102
00:08:04,370 --> 00:08:08,630
‫Vì vậy, đó sẽ là kích hoạt trình phát, đại biểu bộ đếm thời gian.

103
00:08:10,130 --> 00:08:10,520
‫Tiếp theo.

104
00:08:10,520 --> 00:08:16,700
‫Chúng tôi cần thời gian trì hoãn và đó sẽ là thời gian trễ bắt đầu, đó là phao mà chúng tôi vừa tạo.

105
00:08:16,730 --> 00:08:20,120
‫Vì vậy, tiếp theo tôi đang vượt qua sự chậm trễ bắt đầu.

106
00:08:20,990 --> 00:08:27,590
‫Và cuối cùng, tôi không muốn bộ đếm thời gian này lặp lại, vì vậy tôi sẽ chuyển sang giá trị false để chúng tôi không nhận được hành

107
00:08:27,590 --> 00:08:28,430
‫vi lặp lại.

108
00:08:29,300 --> 00:08:33,020
‫Bây giờ tôi sẽ tiếp tục và thụt lề các đầu vào này để nó trông đẹp.

109
00:08:33,710 --> 00:08:38,690
‫Và bây giờ chúng tôi đang gọi bộ hẹn giờ bằng cách sử dụng bộ hẹn giờ mới của chúng tôi.

110
00:08:38,690 --> 00:08:45,380
‫Và khi kết thúc thời gian trễ này, chúng ta sẽ nhận được trạng thái kích hoạt thiết lập trình phát chức năng gọi lại của chúng tôi được gọi

111
00:08:45,380 --> 00:08:51,440
‫với giá trị true được chuyển vào ngay bây giờ vì độ trễ bắt đầu là 3 giây và chúng tôi đang gọi trạng thái kích hoạt

112
00:08:51,440 --> 00:08:55,190
‫thiết lập trình phát chuyển thành false trước khi chúng tôi đặt bộ đếm thời gian.

113
00:08:55,190 --> 00:09:00,920
‫Khi chúng tôi nhấn phát, chúng tôi sẽ không thể di chuyển cho đến khi độ trễ ba giây này hết.

114
00:09:00,920 --> 00:09:03,590
‫Vì vậy, hãy biên dịch nó và xem nó hoạt động như thế nào.

115
00:09:04,100 --> 00:09:09,140
‫Vì vậy, tôi sẽ tiếp tục và chơi trò chơi và tôi đang cố gắng di chuyển xung quanh và tôi không thể.

116
00:09:09,140 --> 00:09:12,470
‫Và sau 3 giây tôi có thể đột ngột di chuyển.

117
00:09:12,500 --> 00:09:14,210
‫Và cũng kiểm tra điều này.

118
00:09:14,240 --> 00:09:17,330
‫Lưu ý rằng con trỏ của tôi là dấu thập.

119
00:09:17,330 --> 00:09:23,000
‫Nó có thể khó nhìn thấy trên màn hình, nhưng bạn sẽ có thể nhìn thấy nó trên màn hình của mình.

120
00:09:23,000 --> 00:09:27,470
‫Và điều này giúp tôi ngắm bắn và điều khiển xe tăng của mình dễ dàng hơn rất nhiều.

121
00:09:27,470 --> 00:09:28,820
‫Xoay tháp pháo.

122
00:09:29,210 --> 00:09:30,140
‫Hoàn hảo.

123
00:09:30,140 --> 00:09:36,440
‫Vì vậy, tóm lại, chúng tôi đã tạo một chức năng bắt đầu trò chơi tay cầm cho chế độ trò chơi và chúng tôi đang gọi điều này

124
00:09:36,440 --> 00:09:37,370
‫và bắt đầu chơi.

125
00:09:37,580 --> 00:09:45,830
‫Và chúng tôi cũng đặt bộ hẹn giờ bằng cách sử dụng bộ hẹn giờ mà chúng tôi đã ràng buộc chức năng trạng thái kích hoạt trình phát đã đặt của chúng tôi trên

126
00:09:45,830 --> 00:09:47,180
‫bộ điều khiển trình phát.

127
00:09:47,180 --> 00:09:53,810
‫Điều này cho phép chúng tôi có một hàm gọi lại cho bộ đếm thời gian của chúng tôi để nhận các thông số đầu vào và chúng tôi sử dụng điều

128
00:09:53,810 --> 00:09:58,340
‫này để bật thông tin nhập của người dùng sau khoảng thời gian trễ ba giây khi trò chơi bắt đầu.

129
00:09:58,370 --> 00:10:03,470
‫Bây giờ, điều này có thể gây khó chịu cho người chơi nếu họ không có một số loại gợi ý trực quan, đại loại

130
00:10:03,470 --> 00:10:05,690
‫là cho họ biết rằng đầu vào chưa được bật.

131
00:10:05,690 --> 00:10:08,150
‫Một cái gì đó giống như một bộ đếm ngược trên màn hình.

132
00:10:08,150 --> 00:10:10,640
‫Vì vậy, chúng tôi sẽ giải quyết vấn đề đó trong các video trong tương lai.

133
00:10:10,640 --> 00:10:12,410
‫Nhưng bây giờ, xin chúc mừng.

134
00:10:12,410 --> 00:10:18,170
‫Bây giờ bạn biết cách liên kết một hàm nhận các tham số đầu vào cho một đại biểu bộ đếm thời gian.

135
00:10:18,170 --> 00:10:19,640
‫Hẹn gặp lại các bạn trong video tiếp theo.

