﻿1
00:00:04,750 --> 00:00:05,980
‫Xin chào và chào mừng.

2
00:00:05,980 --> 00:00:12,010
‫Trong bài giảng này, chúng ta sẽ tìm hiểu về cách chúng ta có thể lấy đầu ra từ các hàm trong C ++.

3
00:00:12,010 --> 00:00:18,970
‫Và chúng tôi sẽ sử dụng điều này để đơn giản hóa đáng kể mã của chúng tôi và bắt đầu triển khai một số mã giả mà chúng

4
00:00:18,970 --> 00:00:19,870
‫tôi đã viết.

5
00:00:19,870 --> 00:00:20,800
‫Hãy đi sâu vào.

6
00:00:20,980 --> 00:00:26,350
‫Vì vậy, trước khi chúng ta cố gắng hiểu các giá trị trả về từ các hàm, hãy đi một vòng ngắn và hiểu nó.

7
00:00:26,350 --> 00:00:29,290
‫Hai khái niệm ở đây bổ sung thêm hai khái niệm nữa vào bảng thuật ngữ của chúng tôi.

8
00:00:29,590 --> 00:00:37,060
‫Vì vậy, cái đầu tiên là biểu thức và biểu thức là một đoạn mã tạo ra một giá trị.

9
00:00:37,060 --> 00:00:43,180
‫Và có một câu lệnh là một đoạn mã là một hành động được thực hiện.

10
00:00:43,570 --> 00:00:51,130
‫Bây giờ hai điều này thực sự có mối quan hệ trong đó một biểu thức hầu như luôn luôn là một câu lệnh trong đó

11
00:00:51,130 --> 00:00:57,100
‫để tính toán giá trị của một đoạn mã, bạn cần nó phải là một hành động được thực hiện.

12
00:00:57,100 --> 00:01:01,030
‫Nhưng điều này không nhất thiết đúng theo chiều ngược lại.

13
00:01:01,030 --> 00:01:04,780
‫Một tuyên bố không phải lúc nào cũng mang lại cho bạn một giá trị.

14
00:01:04,840 --> 00:01:09,910
‫Vì vậy, chúng ta hãy xem một số ví dụ về các biểu thức và một số điều không phải từ mã mà

15
00:01:09,910 --> 00:01:10,960
‫chúng tôi đã viết.

16
00:01:11,170 --> 00:01:20,410
‫Vì vậy, khi chúng ta nhập vectơ của tôi vào C ++, đây là một biểu thức vì nó có giá trị của bất kỳ thứ gì được lưu trữ

17
00:01:20,410 --> 00:01:22,510
‫bên trong biến vectơ của tôi.

18
00:01:22,510 --> 00:01:24,730
‫Điều này cũng đúng với vectơ cục bộ.

19
00:01:24,730 --> 00:01:32,950
‫Và trên thực tế, nếu bạn có vectơ địa phương cộng với z, thì bản thân nó là một biểu thức và vectơ địa phương chấm z cộng

20
00:01:32,950 --> 00:01:33,850
‫với 100.

21
00:01:33,850 --> 00:01:41,620
‫Bản thân nó cũng là một biểu thức, bởi vì vectơ địa phương z đã cho bạn giá trị bên trong của phần tử Z.

22
00:01:41,620 --> 00:01:46,960
‫Và khi bạn thêm 100, điều đó mang lại cho bạn một giá trị mới có thêm 100.

23
00:01:46,960 --> 00:01:48,700
‫Vì vậy, đây là tất cả các biểu thức.

24
00:01:48,940 --> 00:01:55,360
‫Tuy nhiên, một thứ không phải là biểu thức là khi chúng ta khai báo vectơ cục bộ của mình và chúng ta nói vectơ F, vectơ

25
00:01:55,360 --> 00:01:58,870
‫cục bộ bằng vectơ của tôi và đặt dấu chấm phẩy ở cuối dòng.

26
00:01:58,870 --> 00:02:01,000
‫Chúng tôi không thể sử dụng điều đó để nhận được một giá trị.

27
00:02:01,000 --> 00:02:02,590
‫Không có giá trị ở đó.

28
00:02:02,590 --> 00:02:06,370
‫Nó chỉ nói với C ++ rằng Đây là một hành động để bạn thực hiện.

29
00:02:06,370 --> 00:02:09,310
‫Tôi muốn bạn tạo một vectơ cục bộ mới.

30
00:02:09,310 --> 00:02:11,980
‫Vì vậy, đó không phải là một biểu thức.

31
00:02:12,310 --> 00:02:17,020
‫Tuy nhiên, một cái gì đó là một biểu hiện là nhận được vị trí của diễn viên.

32
00:02:17,020 --> 00:02:20,950
‫Đó là một hàm mà chúng ta đang gọi vì có dấu ngoặc đơn ở cuối ở đây.

33
00:02:20,950 --> 00:02:22,720
‫Chúng tôi thực sự không có bất kỳ tranh luận nào ở đây.

34
00:02:22,720 --> 00:02:26,290
‫Đây là một danh sách các đối số trống, nhưng nó đang gọi một cái gì đó.

35
00:02:26,290 --> 00:02:34,780
‫Và bởi vì hàm này có giá trị trả về, đoạn mã thực sự ở đây là một biểu thức nhận giá trị của bất kỳ

36
00:02:34,780 --> 00:02:37,810
‫giá trị nào được trả về từ hàm.

37
00:02:37,810 --> 00:02:44,350
‫Và điều này về cơ bản giống với các chân đầu ra mà chúng ta đã thấy trước đây trong Blueprint.

38
00:02:44,350 --> 00:02:50,800
‫Ngoại trừ không giống như với Blueprint, bạn chỉ có thể có một giá trị đầu ra từ một hàm.

39
00:02:50,800 --> 00:02:52,600
‫Chỉ có một giá trị trả về.

40
00:02:52,600 --> 00:02:59,830
‫Vì vậy, đó là những gì chúng tôi có thể sử dụng ở đây, nơi chúng tôi đã viết mã giả của mình có nội dung Nhận vị trí hiện tại.

41
00:02:59,830 --> 00:03:02,440
‫Đó là nơi chúng tôi sẽ làm điều đó.

42
00:03:02,440 --> 00:03:08,410
‫Chúng tôi sẽ xác định vị trí bằng cách sử dụng vị trí hoạt động của chúng tôi.

43
00:03:08,410 --> 00:03:11,320
‫Vì vậy, hãy tạo một biến cục bộ mới ở đây.

44
00:03:11,320 --> 00:03:14,650
‫Chúng ta sẽ có một biến cục bộ mới được gọi là F của vectơ loại F.

45
00:03:14,650 --> 00:03:20,350
‫Nó phải là một vectơ loại F vì đó là loại được trả về từ vị trí nhận hoạt động.

46
00:03:20,440 --> 00:03:29,470
‫Và chúng ta sẽ gọi vị trí hiện tại này và chúng ta sẽ đặt nó bằng kết quả hoặc biểu thức lấy vị trí tác nhân và sau

47
00:03:29,470 --> 00:03:36,970
‫đó đặt dấu ngoặc đơn một tập hợp các dấu ngoặc đơn phù hợp và sau đó là dấu chấm phẩy để kết thúc

48
00:03:36,970 --> 00:03:37,540
‫dòng.

49
00:03:37,540 --> 00:03:44,020
‫Vì vậy, nếu chúng ta phân tích dòng này một chút, chúng ta có thể thấy rằng phần này ở đây, vị trí của tác nhân nhận và

50
00:03:44,020 --> 00:03:49,990
‫dấu ngoặc đơn là biểu thức mà nó đang nhận cho chúng ta giá trị, đó là vị trí hiện tại của tác nhân.

51
00:03:50,290 --> 00:03:57,040
‫Sau đó, chúng tôi đang thực hiện một nhiệm vụ cho vị trí hiện tại, vị trí này cũng đang được khai báo ngay tại đây.

52
00:03:57,040 --> 00:04:00,550
‫Vì vậy, trên dòng này, toàn bộ dòng này không phải là một biểu thức.

53
00:04:00,550 --> 00:04:03,220
‫Không có giá trị nào ngoài nó, nó là một tuyên bố.

54
00:04:03,220 --> 00:04:09,880
‫Và thường thì bạn có thể nói một câu lệnh bởi vì trong C ++, nó kết thúc bằng dấu chấm phẩy.

55
00:04:09,880 --> 00:04:16,780
‫Được rồi, vì vậy điều này về cơ bản sẽ cho phép chúng tôi loại bỏ vectơ của tôi và vectơ cục

56
00:04:16,780 --> 00:04:23,650
‫bộ mà chúng tôi đã sử dụng trước đây vì chúng tôi có thể cập nhật biến cục bộ của mình tại

57
00:04:23,650 --> 00:04:29,470
‫đây, vị trí hiện tại mà chúng tôi có từ vị trí của diễn viên của chúng tôi.

58
00:04:29,470 --> 00:04:34,390
‫Vì vậy, những gì chúng tôi sẽ làm là sâu hơn ở đây, chúng tôi có một nhận xét nói rằng, hãy đặt vị trí.

59
00:04:34,390 --> 00:04:45,430
‫Vì vậy, sau dòng nhận xét đó, tôi sẽ thiết lập vị trí tác nhân bằng cách sử dụng vị trí hiện tại của biểu thức, chỉ sử dụng giá trị biến đó và sau

60
00:04:45,430 --> 00:04:50,110
‫đó đặt dấu chấm phẩy ở cuối dòng để nói rằng toàn bộ điều này

61
00:04:50,110 --> 00:04:51,460
‫là một câu lệnh.

62
00:04:51,460 --> 00:04:58,990
‫Chúng tôi muốn nó thực thi hành động này được đặt tại một vị trí và lưu ý rằng tôi trong khi nhận xét của tôi được

63
00:04:58,990 --> 00:05:04,120
‫thụt vào, tôi đã quyết định không thụt lề mã để khớp vì thông thường chúng tôi muốn.

64
00:05:04,630 --> 00:05:09,130
‫Các mã ở một mức thụt lề trong hàm.

65
00:05:09,670 --> 00:05:15,490
‫Bây giờ những gì tôi có thể làm là tôi có thể xóa tất cả mã mà chúng tôi đã có trước đây, mọi thứ liên quan đến vectơ cục bộ.

66
00:05:15,490 --> 00:05:18,430
‫Vectơ của tôi đặt một vị trí bằng cách sử dụng vectơ cục bộ.

67
00:05:18,430 --> 00:05:23,830
‫Tôi có thể xóa tất cả những điều đó để tất cả những gì chúng tôi có bây giờ là những thứ xung quanh nhận xét của chúng tôi.

68
00:05:24,040 --> 00:05:27,100
‫Và tôi cũng sẽ đi vào tệp tiêu đề và dọn dẹp mọi thứ ở đây.

69
00:05:27,100 --> 00:05:31,420
‫Chúng ta không còn cần vectơ của tôi nữa, chúng ta không còn cần các thuộc tính mới x của tôi nữa.

70
00:05:31,420 --> 00:05:34,440
‫Vì vậy, tôi cũng sẽ xóa những cái này.

71
00:05:34,450 --> 00:05:40,000
‫Rõ ràng là CP nền tảng di chuyển không thực sự làm được nhiều việc bởi vì chúng tôi nhận được vị trí

72
00:05:40,000 --> 00:05:44,680
‫hoạt động hiện tại, sau đó chúng tôi đặt lại nó, về cơ bản không có tác dụng.

73
00:05:44,680 --> 00:05:52,870
‫Vì vậy, tôi muốn bạn cập nhật vị trí hiện tại của nền tảng di chuyển trong chức năng đánh dấu đó.

74
00:05:52,990 --> 00:05:56,530
‫Vì vậy, hãy sử dụng các thành viên X hoặc Y khi bạn thấy phù hợp.

75
00:05:56,530 --> 00:06:03,820
‫Một X sẽ di chuyển bạn về phía trước, Y sẽ di chuyển bạn sang phải, sau đó bạn có thể thêm vào nó và chỉ định lại thành viên,

76
00:06:03,820 --> 00:06:08,770
‫như chúng tôi đã làm trước đây, để cập nhật vị trí nền tảng di chuyển của chúng tôi.

77
00:06:08,770 --> 00:06:15,940
‫Vì vậy, hãy thêm một hoặc hai tùy thuộc vào tốc độ bạn muốn nền tảng di chuyển và sau đó di chuyển nền tảng đến vị trí bắt

78
00:06:15,940 --> 00:06:20,860
‫đầu bởi vì bây giờ chúng tôi không có biến thành viên đó để cho nó biết vị trí bắt

79
00:06:20,860 --> 00:06:23,920
‫đầu, chúng tôi thực sự đang sử dụng vị trí hiện tại.

80
00:06:23,920 --> 00:06:28,960
‫Vì vậy, bất cứ nơi nào bạn đặt nền tảng đó, đó là nơi nền tảng sẽ bắt đầu từ đó.

81
00:06:29,200 --> 00:06:35,380
‫Và sau đó tôi muốn bạn biên dịch và kiểm tra mã của bạn và xem nó có chuyển động như bạn mong đợi hay không.

82
00:06:35,410 --> 00:06:37,240
‫Tạm dừng video và tiếp tục.

83
00:06:40,030 --> 00:06:40,360
‫Được chứ.

84
00:06:40,360 --> 00:06:41,240
‫Chào mừng trở lại.

85
00:06:41,260 --> 00:06:47,230
‫Vì vậy, chúng tôi sẽ đặt dòng mã này ngay bên dưới nhận xét nói về nó, thêm

86
00:06:47,230 --> 00:06:49,210
‫vectơ vào vị trí đó.

87
00:06:49,600 --> 00:06:52,900
‫Và lý do chúng tôi đặt nó ở đây là vì đơn đặt hàng.

88
00:06:52,900 --> 00:06:56,830
‫Chúng tôi muốn lấy vị trí hiện tại, cập nhật nó và sau đó thiết lập nó.

89
00:06:56,860 --> 00:06:59,710
‫Chúng tôi không muốn bất cứ điều gì xảy ra ở đó.

90
00:07:00,070 --> 00:07:04,790
‫Nếu chúng tôi cập nhật nó trước khi chúng tôi tạo biến, thì biến đó sẽ không tồn tại.

91
00:07:04,810 --> 00:07:06,490
‫Hãy nhớ rằng, đó là một biến cục bộ.

92
00:07:06,520 --> 00:07:11,110
‫Nó chỉ tồn tại khi chúng ta tạo nó trong lệnh gọi cụ thể này của hàm.

93
00:07:11,110 --> 00:07:16,750
‫Và nếu chúng tôi thực hiện nó sau khi thiết lập lại vị trí của tác nhân, thì sửa đổi đó sẽ

94
00:07:16,750 --> 00:07:20,210
‫chỉ bị loại bỏ khi chúng tôi đến dấu ngoặc nhọn trong hàm.

95
00:07:20,260 --> 00:07:29,410
‫Vì vậy, chúng tôi sẽ đặt vị trí hiện tại chấm x, tôi sẽ sử dụng bằng vị trí hiện tại, chấm x cộng

96
00:07:29,410 --> 00:07:34,180
‫một và sau đó đặt dấu chấm phẩy ở cuối dòng.

97
00:07:34,180 --> 00:07:40,180
‫Và chúng ta sẽ quay trở lại Unreal và chúng ta sẽ nhấn nút biên dịch.

98
00:07:40,180 --> 00:07:45,640
‫Và như tôi đã đề cập, bây giờ chúng ta cần phải di chuyển nền tảng di chuyển này đến vị trí ban đầu của nó.

99
00:07:45,640 --> 00:07:51,490
‫Vì vậy, tôi sẽ nhấp vào nhân vật người thứ ba của chúng tôi và tôi sẽ sao chép vị trí của anh ấy bằng cách nhấp chuột phải vào

100
00:07:51,490 --> 00:07:56,050
‫vị trí, nhấn sao chép, sau đó đi đến nền tảng di chuyển của chúng tôi, nhấp chuột phải vào vị trí của

101
00:07:56,050 --> 00:07:56,770
‫nó, nhấn dán.

102
00:07:56,770 --> 00:08:01,510
‫Vì vậy, điều đó đặt nền tảng ngay bên trong trình phát của chúng tôi, mà thực tế không phải là những gì chúng tôi muốn.

103
00:08:01,510 --> 00:08:09,250
‫Vì vậy, tôi sẽ di chuyển nó một chút sang bên phải của người chơi như vậy và tôi có thể xem nó có ở độ cao phù hợp

104
00:08:09,250 --> 00:08:09,790
‫hay không.

105
00:08:09,790 --> 00:08:15,400
‫Tôi nghĩ rằng tôi sẽ làm cho nó thấp hơn một chút, đó là một trong những lợi ích của việc sử dụng vị trí hiện

106
00:08:15,400 --> 00:08:19,960
‫tại thay vì một biến vị trí, là tôi thực sự có thể thấy nền tảng này sẽ ở đâu trên

107
00:08:19,960 --> 00:08:20,560
‫thế giới.

108
00:08:20,800 --> 00:08:27,130
‫Vì vậy, bây giờ nếu tôi tiếp tục và nhấn chơi, thì bạn có thể thấy rằng nền tảng đang di chuyển theo hướng X một cách

109
00:08:27,130 --> 00:08:31,510
‫dễ dàng và tôi vẫn có thể nhảy lên nó và được di chuyển cùng với nó.

110
00:08:31,510 --> 00:08:32,450
‫Công cụ tuyệt vời.

111
00:08:32,470 --> 00:08:36,490
‫Bây giờ chúng ta đã học cách hoạt động của giá trị trả về ngoài các hàm.

112
00:08:36,490 --> 00:08:43,160
‫Chúng tôi thực sự đang bắt đầu hiểu rất nhiều khái niệm từ các bản thiết kế trong thế giới C ++.

113
00:08:43,180 --> 00:08:44,890
‫Hẹn gặp lại các bạn trong bài giảng tiếp theo.

