﻿1
00:00:04,400 --> 00:00:05,720
‫Xin chào và chào mừng.

2
00:00:05,720 --> 00:00:11,870
‫Trong bài giảng này, chúng ta sẽ xem xét các vectơ và nói chung là những thứ phức tạp hơn

3
00:00:11,870 --> 00:00:19,810
‫như cấu trúc trong C ++ và cách chúng ta có thể truy cập các phần riêng lẻ để đặt và lấy chúng từ một cấu trúc.

4
00:00:19,820 --> 00:00:20,720
‫Hãy đi sâu vào.

5
00:00:21,260 --> 00:00:27,800
‫Vì vậy, chúng ta đã học cách xử lý các kiểu dữ liệu cơ bản trong C ++ và tạo các biến và gán cho chúng và thậm chí thực

6
00:00:27,800 --> 00:00:29,870
‫hiện một số phép tính cơ bản với chúng.

7
00:00:29,870 --> 00:00:35,570
‫Nhưng nếu chúng ta muốn xử lý các kiểu phức tạp hơn như vectơ và phép biến đổi thì sao?

8
00:00:35,840 --> 00:00:38,090
‫Chà, quá trình này thực sự rất giống nhau.

9
00:00:38,090 --> 00:00:41,630
‫Hãy bắt đầu bằng cách xóa một số mã thử nghiệm mà chúng ta đã có.

10
00:00:41,630 --> 00:00:43,580
‫Tôi sẽ xóa tất cả tài sản của mình.

11
00:00:43,580 --> 00:00:46,700
‫Đối với tôi, đó là dòng 26 xuống 51.

12
00:00:46,940 --> 00:00:54,350
‫Và tôi cũng sẽ đi qua tệp C ++ và xóa các dòng từ 19 đến 23, đó là nơi tôi đang thực hiện tất cả công

13
00:00:54,350 --> 00:00:56,900
‫việc với các biến mà tôi vừa xóa.

14
00:00:56,900 --> 00:01:01,760
‫Vì vậy, bây giờ Begin Play hoàn toàn trống và chúng ta trở lại hình vuông về cơ bản.

15
00:01:02,570 --> 00:01:06,350
‫Vì vậy, bây giờ những gì tôi muốn làm là thêm một thuộc tính mới của bạn.

16
00:01:06,350 --> 00:01:16,010
‫Vì vậy, tất cả các chữ hoa một lần nữa chỉnh sửa ở bất kỳ đâu và tôi sẽ cung cấp cho loại véc tơ F này thông báo viết hoa F, viết

17
00:01:16,010 --> 00:01:22,190
‫hoa V và đây là cách chúng ta xử lý các vectơ mà chúng ta đã xử lý trong Blueprint.

18
00:01:22,190 --> 00:01:27,470
‫Chúng là các vectơ giống nhau dưới bề mặt, nhưng đây là cách chúng ta gõ nó trong C ++.

19
00:01:27,470 --> 00:01:33,710
‫Chữ F đứng trước nó chỉ cho chúng ta biết rằng đây là một cấu trúc giống như chữ A tiến hành nền tảng

20
00:01:33,710 --> 00:01:37,010
‫di chuyển cho chúng ta biết rằng đó là một tác nhân.

21
00:01:37,010 --> 00:01:38,390
‫Đó không phải là một thứ C ++.

22
00:01:38,390 --> 00:01:44,240
‫Đó là một quy ước đặt tên không thực để đặt tên cho các lớp, cấu trúc và kiểu khác nhau.

23
00:01:44,630 --> 00:01:49,400
‫Vì vậy, những gì chúng ta sẽ làm là đặt tên cho biến này và nó hoạt động giống hệt như

24
00:01:49,400 --> 00:01:51,080
‫khi nó là một float hoặc int.

25
00:01:51,080 --> 00:01:53,600
‫Ví dụ, chúng ta có thể gọi nó là phao của tôi.

26
00:01:53,600 --> 00:01:55,010
‫Nó cần phải không có khoảng trắng.

27
00:01:55,160 --> 00:01:59,120
‫Và nếu chúng ta đặt dấu chấm phẩy ở cuối dòng ở đây, thì đó là nó.

28
00:01:59,120 --> 00:02:06,170
‫Chúng tôi đã khai báo một biến mới sẽ hiển thị trong ngăn chi tiết của chúng tôi trong trình chỉnh sửa, nhưng điều đó là chưa đủ

29
00:02:06,170 --> 00:02:07,100
‫đối với tôi.

30
00:02:07,100 --> 00:02:14,030
‫Tôi thực sự muốn đặt giá trị mặc định này khác với giá trị mặc định 000.

31
00:02:14,150 --> 00:02:17,690
‫Để làm được điều đó, chúng tôi cần cập nhật bảng thuật ngữ của mình với một thuật ngữ mới.

32
00:02:17,690 --> 00:02:25,070
‫Chúng ta cần một hàm tạo, về cơ bản là một thứ gì đó trong C ++ tạo ra một cấu trúc hoặc giá trị lớp mới.

33
00:02:25,160 --> 00:02:33,110
‫Vì vậy, nếu chúng ta tạo một hàm tạo cho vectơ, thì cách thức hoạt động của nó là chúng ta muốn gán một giá trị

34
00:02:33,110 --> 00:02:34,700
‫để chúng ta nhấn bằng.

35
00:02:34,700 --> 00:02:40,550
‫Và thông thường, khi chúng ta xử lý số nguyên hoặc số float, chúng ta chỉ có thể sử dụng một cái gì đó giống như một hoặc một

36
00:02:40,550 --> 00:02:41,330
‫giá trị đúng.

37
00:02:41,330 --> 00:02:46,280
‫Đã có các giá trị được tạo sẵn cho phép chúng tôi đặt giá trị của các loại cơ bản đó.

38
00:02:46,280 --> 00:02:53,120
‫Nhưng khi chúng ta có nhiều kiểu phức tạp hơn như struct, chúng ta cần sử dụng hàm tạo và hàm tạo

39
00:02:53,120 --> 00:02:56,240
‫sẽ luôn có cùng tên với kiểu dữ liệu.

40
00:02:56,240 --> 00:03:02,660
‫Vì vậy, nó sẽ được đánh vần chính xác như vectơ f, sau đó bạn mở một số dấu ngoặc đơn và bên trong

41
00:03:02,660 --> 00:03:05,930
‫dấu ngoặc đơn, bạn cung cấp các giá trị mà bạn muốn.

42
00:03:05,930 --> 00:03:08,600
‫Vì vậy X, Y và Z là những gì tạo nên một vectơ.

43
00:03:08,600 --> 00:03:15,050
‫Vì vậy, chúng ta có thể có một, hai và ba tất cả được phân tách bằng dấu phẩy, sau đó chúng ta đóng dấu ngoặc đơn

44
00:03:15,050 --> 00:03:17,000
‫và đặt dấu chấm phẩy ở cuối dòng.

45
00:03:17,000 --> 00:03:23,480
‫Và điều đó sẽ cung cấp giá trị mặc định là một, hai và ba trong X, Y và Z cho vectơ này.

46
00:03:23,480 --> 00:03:24,590
‫Hãy thử nó ra.

47
00:03:24,740 --> 00:03:27,470
‫Quay lại Unreal và nhấn nút biên dịch.

48
00:03:27,560 --> 00:03:34,550
‫Và sau khi hoàn tất thành công, chúng tôi có thể đảm bảo rằng chúng tôi đã chọn tác nhân nền tảng chuyển động trong phần ngoại vi của

49
00:03:34,550 --> 00:03:40,070
‫chúng tôi và xem bảng chi tiết và thấy rằng thực sự chúng tôi đã có một thuộc tính mới có tên

50
00:03:40,070 --> 00:03:40,730
‫My Float.

51
00:03:40,730 --> 00:03:47,510
‫Những cái khác đã bị lấy đi và các giá trị ở các vị trí khác nhau của nó X, Y và Z là một, hai

52
00:03:47,510 --> 00:03:49,700
‫và ba, giống như chúng ta mong đợi.

53
00:03:50,090 --> 00:03:51,170
‫Vì vậy, điều đó thật tuyệt.

54
00:03:51,170 --> 00:03:57,680
‫Nhưng điều gì sẽ xảy ra nếu tôi muốn nắm giữ những giá trị này và gắn chúng vào một tài sản khác?

55
00:03:57,680 --> 00:04:04,250
‫Vì vậy, nếu tôi có một thuộc tính khác được đánh dấu là chỉnh sửa ở bất kỳ đâu để chúng tôi có thể thấy nó trong

56
00:04:04,550 --> 00:04:12,740
‫trình kiểm tra của loại float được gọi là x của tôi và chúng tôi sẽ mặc định điều này bằng 0 để chúng tôi có thể thấy rằng chúng tôi đang thay đổi

57
00:04:12,740 --> 00:04:13,160
‫nó.

58
00:04:13,640 --> 00:04:20,750
‫Và những gì tôi muốn làm là lấy giá trị x từ phao của tôi khi bắt đầu chơi và tôi muốn đặt nó

59
00:04:20,750 --> 00:04:22,370
‫trong biến x của tôi.

60
00:04:22,460 --> 00:04:29,450
‫Vì vậy, chúng ta hãy chuyển sang tệp C ++ và bắt đầu chơi sau dòng của chúng tôi nói rằng siêu lớn đang chơi,

61
00:04:30,020 --> 00:04:37,730
‫chúng tôi sẽ đặt x của tôi bằng với những gì chúng tôi muốn lấy thứ gì đó từ vectơ của tôi, nhưng chúng tôi không muốn toàn bộ

62
00:04:37,730 --> 00:04:38,600
‫vectơ của tôi.

63
00:04:38,600 --> 00:04:39,860
‫Đó sẽ là một lỗi.

64
00:04:39,860 --> 00:04:44,780
‫Chúng ta không thể đặt một vectơ thành một float, chúng tôi chỉ muốn phần x của vectơ đó.

65
00:04:44,930 --> 00:04:48,740
‫Để hiểu được điều đó, chúng ta cần hiểu khái niệm về toán tử.

66
00:04:48,770 --> 00:04:53,090
‫Các toán tử là các ký hiệu trong C ++ có tác dụng gì đó.

67
00:04:53,090 --> 00:04:54,590
‫Chúng tôi đã thấy một số.

68
00:04:54,590 --> 00:04:57,950
‫Chúng ta đã thấy toán tử dấu cộng, toán tử này cộng hai thứ lại với nhau.

69
00:04:57,950 --> 00:04:59,510
‫Cũng có một toán tử trừ.

70
00:04:59,510 --> 00:05:03,770
‫Có toán tử bình đẳng, toán tử bằng, gán.

71
00:05:03,980 --> 00:05:04,310
‫Nhiều thứ.

72
00:05:04,310 --> 00:05:06,740
‫Vì vậy, chúng tôi đang sử dụng điều này ngay tại đây trên dòng 19.

73
00:05:06,740 --> 00:05:12,020
‫Đó là một toán tử đang gán giá trị của vectơ cho X của tôi.

74
00:05:12,230 --> 00:05:18,850
‫Và sau đó chúng ta có thêm một toán tử nữa, mà chúng ta cần biết đó là toán tử DOT.

75
00:05:18,860 --> 00:05:23,360
‫Nó là một toán tử lấy một cái gì đó từ bên trong một cấu trúc hoặc một lớp.

76
00:05:23,360 --> 00:05:27,260
‫Vì vậy, chúng tôi muốn lấy X từ bên trong vectơ của tôi.

77
00:05:27,260 --> 00:05:34,040
‫Vì vậy, chúng tôi sử dụng một toán tử dấu chấm, chúng tôi thực hiện dấu chấm x bây giờ chúng tôi không sử dụng dấu cách ở đây giữa vectơ của tôi và x.

78
00:05:34,040 --> 00:05:40,460
‫Chúng tôi chỉ để những thứ này chạy cùng nhau như vậy, đó là cách chúng tôi thường để lại mọi thứ mặc dù không nhất

79
00:05:40,460 --> 00:05:42,200
‫thiết là lỗi khi đặt khoảng trắng.

80
00:05:42,200 --> 00:05:51,560
‫Vì vậy, chúng tôi đã có véc tơ x của tôi nên nhận giá trị x của véc tơ và đặt nó vào float x của tôi.

81
00:05:51,560 --> 00:05:57,500
‫Vì vậy, chúng tôi đặt dấu chấm phẩy ở cuối dòng ở đó và như thường lệ, tôi bỏ qua các ô vuông màu đỏ vì đôi khi chúng

82
00:05:57,500 --> 00:06:00,530
‫mất nhiều thời gian để cập nhật và đôi khi chúng không chính xác.

83
00:06:00,650 --> 00:06:06,860
‫Và sau đó chúng ta sẽ bắt đầu viết mã trực tiếp và nhấn vào nút biên dịch lại và chỉ cần kiểm tra xem chúng ta có nhận

84
00:06:06,860 --> 00:06:08,630
‫được kết quả thành công hay không.

85
00:06:08,630 --> 00:06:11,120
‫Và không, bạn thấy đấy, chúng tôi đã gặp sự cố trong quá trình xây dựng.

86
00:06:11,120 --> 00:06:16,100
‫Và nếu bạn nhìn vào lỗi, nó nói rằng vectơ của tôi là một số nhận dạng không được khai báo và đó là do

87
00:06:16,100 --> 00:06:17,390
‫tôi đã mắc lỗi chính tả.

88
00:06:17,390 --> 00:06:22,820
‫Tôi đã gọi vectơ F là phao của mình và bạn có thể đang la hét trước màn hình của mình, nhưng thật tốt khi cho

89
00:06:22,820 --> 00:06:26,180
‫bạn thấy rằng ngay cả những lập trình viên có kinh nghiệm cũng mắc lỗi.

90
00:06:26,180 --> 00:06:30,890
‫Chúng tôi muốn gọi đó là vectơ của tôi, vì vậy tôi sẽ quay lại tệp tiêu đề

91
00:06:30,890 --> 00:06:35,720
‫và đổi tên nó thành vectơ của tôi, điều này sẽ loại bỏ vấn đề trong bộ não của tôi.

92
00:06:35,720 --> 00:06:38,900
‫Hãy tiếp tục và nhấp lại vào nút biên dịch.

93
00:06:38,900 --> 00:06:44,180
‫Và điều đó chỉ cho bạn biết cảm giác khi bạn mắc lỗi, bạn gặp lỗi biên dịch.

94
00:06:44,180 --> 00:06:45,280
‫Lúc nào chả vậy.

95
00:06:45,300 --> 00:06:48,290
‫Trên thực tế, rất hiếm khi không mắc sai lầm.

96
00:06:48,290 --> 00:06:54,800
‫Lần đầu tiên bạn làm điều gì đó, sau đó chúng tôi sẽ tiếp tục và nhấn chơi và chúng tôi sẽ xem giá trị mà chúng tôi

97
00:06:54,830 --> 00:06:56,300
‫nhận được trong ngăn chi tiết.

98
00:06:56,300 --> 00:07:05,060
‫Bạn có thể thấy bây giờ x của tôi đã được đặt thành một vì đó là giá trị trong thành phần x của biến vectơ

99
00:07:05,060 --> 00:07:05,990
‫của tôi.

100
00:07:06,080 --> 00:07:09,800
‫Vì vậy, tôi muốn thách thức bạn đặt giá trị vectơ.

101
00:07:09,830 --> 00:07:11,930
‫Chúng tôi đã nhận được các giá trị từ vectơ.

102
00:07:11,930 --> 00:07:13,070
‫Bây giờ chúng ta hãy thử thiết lập chúng.

103
00:07:13,070 --> 00:07:17,240
‫Về cơ bản, hãy thử sử dụng toán tử dấu chấm để đặt giá trị.

104
00:07:17,480 --> 00:07:25,850
‫Hãy thử lật hai cạnh của nó bằng để chúng ta có chữ X của tôi ở bên phải và vectơ của tôi

105
00:07:25,850 --> 00:07:27,050
‫ở bên trái.

106
00:07:27,050 --> 00:07:30,500
‫Và điều gì sẽ xảy ra nếu bạn thay đổi nó thành Y hoặc Z?

107
00:07:30,530 --> 00:07:32,090
‫Có sự khác biệt nào ở đó không?

108
00:07:32,120 --> 00:07:33,500
‫Tạm dừng video và tiếp tục.

109
00:07:36,830 --> 00:07:37,430
‫Được chứ.

110
00:07:37,430 --> 00:07:37,940
‫Chào mừng trở lại.

111
00:07:37,940 --> 00:07:40,640
‫Vì vậy, tôi sẽ thử lật ngược hai thứ này xung quanh.

112
00:07:40,640 --> 00:07:49,010
‫Hãy chuyển sang C ++ và trong Begin Play thay vào đó điều tôi sẽ nói là dấu chấm vectơ y của tôi bằng với x

113
00:07:49,010 --> 00:07:52,910
‫của tôi và sau đó đặt dấu chấm phẩy ở cuối dòng.

114
00:07:52,910 --> 00:07:57,770
‫Và đây là cách chúng ta có thể đặt các giá trị trong một cấu trúc.

115
00:07:57,770 --> 00:08:06,890
‫Vì vậy, chúng ta hãy quay trở lại Unreal và biên dịch lại và sau đó chúng ta có thể tiếp tục và đặt một số giá trị trong X của tôi.

116
00:08:06,890 --> 00:08:08,960
‫Vì vậy, tôi sẽ đặt giá trị của năm vào đây.

117
00:08:10,010 --> 00:08:15,650
‫Sau đó, tôi sẽ tiếp tục chơi và xem bảng chi tiết cho nền tảng di chuyển.

118
00:08:15,650 --> 00:08:24,620
‫Và chắc chắn, giá trị y của vectơ của tôi đã được cập nhật khi bắt đầu phát bằng giá trị trong x của tôi.

119
00:08:24,740 --> 00:08:26,060
‫Vì vậy, xin chúc mừng.

120
00:08:26,060 --> 00:08:33,080
‫Chúng ta đã thấy cách sử dụng các kiểu phức tạp hơn là kiểu phức hợp như cấu trúc trong C ++.

121
00:08:33,080 --> 00:08:34,910
‫Hẹn gặp lại các bạn trong bài giảng tiếp theo.

