﻿1
00:00:04,400 --> 00:00:05,720
‫أهلا ومرحبا.

2
00:00:05,720 --> 00:00:11,870
‫في هذه المحاضرة ، سننظر في المتجهات وبشكل عام أشياء أكثر تعقيدًا مثل

3
00:00:11,870 --> 00:00:19,810
‫الهياكل في C ++ وكيف يمكننا الوصول إلى الأجزاء الفردية لتعيينها والحصول عليها من بنية.

4
00:00:19,820 --> 00:00:20,720
‫دعنا نتعمق.

5
00:00:21,260 --> 00:00:27,800
‫لذلك تعلمنا كيفية التعامل مع أنواع البيانات الأساسية في C ++ وإنشاء متغيرات وتخصيصها وحتى إجراء بعض العمليات

6
00:00:27,800 --> 00:00:29,870
‫الحسابية الأساسية معهم.

7
00:00:29,870 --> 00:00:35,570
‫ولكن ماذا لو أردنا التعامل مع أنواع أكثر تعقيدًا مثل المتجهات والتحويلات؟

8
00:00:35,840 --> 00:00:38,090
‫حسنًا ، العملية متشابهة جدًا في الواقع.

9
00:00:38,090 --> 00:00:41,630
‫لنبدأ بمسح بعض أكواد الاختبار التي لدينا بالفعل.

10
00:00:41,630 --> 00:00:43,580
‫سأقوم بحذف جميع ممتلكاتي.

11
00:00:43,580 --> 00:00:46,700
‫بالنسبة لي ، هذا السطر 26 نزولاً إلى 51.

12
00:00:46,940 --> 00:00:54,350
‫وسأنتقل أيضًا إلى ملف C ++ وأحذف الأسطر من 19 إلى 23 ، حيث أقوم بكل العمل مع تلك المتغيرات

13
00:00:54,350 --> 00:00:56,900
‫التي قمت بحذفها للتو.

14
00:00:56,900 --> 00:01:01,760
‫لذا الآن أصبح بدء اللعب فارغًا تمامًا ونعود إلى المربع الأول بشكل أساسي.

15
00:01:02,570 --> 00:01:06,350
‫والآن ما أريد أن أفعله هو إضافة خاصية جديدة لك.

16
00:01:06,350 --> 00:01:16,010
‫لذا فإن كل الحروف الكبيرة تعدل مرة أخرى في أي مكان وسأعطي هذا النوع من إشعار المتجه F بالأحرف الكبيرة F ، V الكبيرة وهذه هي

17
00:01:16,010 --> 00:01:22,190
‫الطريقة التي نتعامل بها مع المتجهات التي تعاملنا معها في مخطط Blueprint.

18
00:01:22,190 --> 00:01:27,470
‫إنها نفس المتجهات تحت السطح ، لكن هذه هي الطريقة التي نكتبها في C ++.

19
00:01:27,470 --> 00:01:33,710
‫يتيح لنا الحرف F الذي يسبقه معرفة أن هذا هيكل بنفس الطريقة التي تتيح لنا A التي تتابع

20
00:01:33,710 --> 00:01:37,010
‫الانتقال منصة معرفة أن هذا هو ممثل.

21
00:01:37,010 --> 00:01:38,390
‫هذا ليس شيئًا C ++.

22
00:01:38,390 --> 00:01:44,240
‫هذا هو اصطلاح تسمية غير حقيقي لتسمية الفئات والتراكيب والأنواع المختلفة.

23
00:01:44,630 --> 00:01:49,400
‫إذن ما سنفعله هو إعطاء هذا المتغير اسمًا وهذا يعمل تمامًا كما لو كان عددًا

24
00:01:49,400 --> 00:01:51,080
‫عشريًا أو عدد صحيح.

25
00:01:51,080 --> 00:01:53,600
‫يمكننا أن نسميها عوامة ، على سبيل المثال.

26
00:01:53,600 --> 00:01:55,010
‫لا يحتاج إلى مسافات.

27
00:01:55,160 --> 00:01:59,120
‫وإذا وضعنا فاصلة منقوطة في نهاية السطر هنا ، فهذا كل شيء.

28
00:01:59,120 --> 00:02:06,170
‫لقد أعلنا عن متغير جديد سيكون مرئيًا في جزء التفاصيل في المحرر ، لكن هذا لا يكفي بالنسبة

29
00:02:06,170 --> 00:02:07,100
‫لي.

30
00:02:07,100 --> 00:02:14,030
‫أود أن أعطي هذه القيمة الافتراضية التي تختلف عن القيمة الافتراضية 000.

31
00:02:14,150 --> 00:02:17,690
‫للقيام بذلك ، نحتاج إلى تحديث مسردنا بمصطلح جديد.

32
00:02:17,690 --> 00:02:25,070
‫نحتاج إلى مُنشئ ، وهو أساسًا شيء في C ++ يصنع قيمة بنية أو فئة جديدة.

33
00:02:25,160 --> 00:02:33,110
‫لذا ، إذا أردنا إنشاء مُنشئ للمتجه ، فإن الطريقة التي يعمل بها هذا هي أننا نريد تعيين قيمة لذلك

34
00:02:33,110 --> 00:02:34,700
‫نضغط على يساوي.

35
00:02:34,700 --> 00:02:40,550
‫وعادة عندما نتعامل مع الأعداد الصحيحة أو العائمة ، يمكننا استخدام شيء مثل واحد

36
00:02:40,550 --> 00:02:41,330
‫أو صحيح.

37
00:02:41,330 --> 00:02:46,280
‫كانت هناك قيم مدمجة سمحت لنا بتحديد قيمة تلك الأنواع الأساسية.

38
00:02:46,280 --> 00:02:53,120
‫ولكن عندما يكون لدينا أنواع أكثر تفصيلاً مثل البنية ، نحتاج إلى استخدام المُنشئ وسيحمل

39
00:02:53,120 --> 00:02:56,240
‫المُنشئ دائمًا نفس اسم نوع البيانات.

40
00:02:56,240 --> 00:03:02,660
‫لذلك سيكون المتجه f كما هو بالضبط ، ثم تفتح بعض الأقواس وداخل الأقواس

41
00:03:02,660 --> 00:03:05,930
‫تعطي القيم التي تريدها.

42
00:03:05,930 --> 00:03:08,600
‫إذن X و Y و Z هو ما يشكل المتجه.

43
00:03:08,600 --> 00:03:15,050
‫لذلك يمكن أن يكون لدينا واحد واثنان وثلاثة مفصولة بفواصل ، ثم نغلق الأقواس ونضع فاصلة

44
00:03:15,050 --> 00:03:17,000
‫منقوطة في نهاية السطر.

45
00:03:17,000 --> 00:03:23,480
‫وهذا سيعطي قيمة افتراضية هي واحد واثنان وثلاثة في X و Y و Z لهذا المتجه.

46
00:03:23,480 --> 00:03:24,590
‫لنجربها.

47
00:03:24,740 --> 00:03:27,470
‫ارجع إلى Unreal واضغط على زر الترجمة.

48
00:03:27,560 --> 00:03:34,550
‫وبمجرد اكتمال ذلك بنجاح ، يمكننا التأكد من اختيار ممثل النظام الأساسي المتحرك في الخارج

49
00:03:34,550 --> 00:03:40,070
‫وإلقاء نظرة على جزء التفاصيل ونرى أنه بالفعل لدينا خاصية جديدة تسمى My

50
00:03:40,070 --> 00:03:40,730
‫Float.

51
00:03:40,730 --> 00:03:47,510
‫تم حذف القيم الأخرى والقيم في مواضعها المختلفة X و Y و Z هي واحد واثنان وثلاثة

52
00:03:47,510 --> 00:03:49,700
‫، تمامًا كما نتوقعها.

53
00:03:50,090 --> 00:03:51,170
‫هذا رائع.

54
00:03:51,170 --> 00:03:57,680
‫لكن ماذا لو أردت التمسك بهذه القيم ولصقها ربما في خاصية أخرى؟

55
00:03:57,680 --> 00:04:04,250
‫لذا ، إذا كان لدي خاصية أخرى تم تعليمها على أنها تعديل في أي مكان حتى نتمكن من رؤيتها

56
00:04:04,550 --> 00:04:13,160
‫في مفتش النوع float المسمى my x وسنقوم افتراضيًا بذلك على الصفر فقط حتى نتمكن من رؤية أننا نقوم بتغييرها.

57
00:04:13,640 --> 00:04:20,750
‫وما أريد فعله هو الحصول على قيمة x من عوامة عند بدء اللعب وأريد تعيينها في متغير

58
00:04:20,750 --> 00:04:22,370
‫x الخاص بي.

59
00:04:22,460 --> 00:04:29,450
‫لذلك دعونا ننتقل إلى ملف C ++ ونبدأ اللعب بعد السطر الذي يقول إنه كبير جدًا في اللعب

60
00:04:30,020 --> 00:04:37,730
‫، سنقوم بتعيين x الخاص بي مساويًا لما نريد الحصول على شيء من المتجه الخاص بي ، لكننا لا نريد كل

61
00:04:37,730 --> 00:04:38,600
‫متجهي.

62
00:04:38,600 --> 00:04:39,860
‫سيكون ذلك خطأ.

63
00:04:39,860 --> 00:04:44,780
‫لا يمكننا تعيين متجه في عوامة ، نريد فقط الجزء x من هذا المتجه.

64
00:04:44,930 --> 00:04:48,740
‫حسنًا ، لفهم ذلك ، نحتاج إلى فهم مفهوم المشغل.

65
00:04:48,770 --> 00:04:53,090
‫العوامل هي رموز في C ++ تفعل شيئًا ما.

66
00:04:53,090 --> 00:04:54,590
‫لقد رأينا القليل بالفعل.

67
00:04:54,590 --> 00:04:57,950
‫لقد رأينا عامل الجمع ، الذي يجمع شيئين معًا.

68
00:04:57,950 --> 00:04:59,510
‫هناك أيضًا عامل ناقص.

69
00:04:59,510 --> 00:05:03,770
‫هناك عامل المساواة ، عامل التساوي ، الذي يعين.

70
00:05:03,980 --> 00:05:04,310
‫أشياء.

71
00:05:04,310 --> 00:05:06,740
‫لذلك نحن نستخدم هذا هنا في السطر 19.

72
00:05:06,740 --> 00:05:12,020
‫هذا عامل يعين قيمة المتجه إلى X الخاص بي.

73
00:05:12,230 --> 00:05:18,850
‫ومن ثم لدينا عامل آخر ، والذي نحتاج إلى معرفة ما هو عامل التشغيل DOT.

74
00:05:18,860 --> 00:05:23,360
‫إنه عامل يحصل على شيء ما من داخل بنية أو فئة.

75
00:05:23,360 --> 00:05:27,260
‫لذلك نريد الحصول على X من داخل المتجه الخاص بي.

76
00:05:27,260 --> 00:05:34,040
‫لذلك نستخدم عامل النقطة ، ونستخدم النقطة x الآن ، ولا نستخدم مسافة هنا بين المتجه و x.

77
00:05:34,040 --> 00:05:40,460
‫نحن فقط نترك هذه الأشياء تعمل معًا هكذا هكذا نترك الأشياء عادةً على الرغم من أنه ليس من الخطأ بالضرورة

78
00:05:40,460 --> 00:05:42,200
‫وضع مسافات فيها.

79
00:05:42,200 --> 00:05:51,560
‫إذن لدينا المتجه x يجب أن نحصل على قيمة x للمتجه ونضعه في عوامة x الخاصة بي.

80
00:05:51,560 --> 00:05:57,500
‫لذلك وضعنا فاصلة منقوطة في نهاية السطر هناك وكالعادة أتجاهل الخطوط الحمراء لأنها في بعض الأحيان تستغرق

81
00:05:57,500 --> 00:06:00,530
‫وقتًا طويلاً للتحديث وأحيانًا تكون غير صحيحة.

82
00:06:00,650 --> 00:06:06,860
‫وبعد ذلك سنذهب إلى البرمجة الحية ونضغط على الزر الذي يعيد التجميع ونتحقق فقط مما إذا كنا

83
00:06:06,860 --> 00:06:08,630
‫سنحصل على نتيجة ناجحة.

84
00:06:08,630 --> 00:06:11,120
‫ولا ، كما ترى ، لدينا فشل في البناء.

85
00:06:11,120 --> 00:06:16,100
‫وإذا نظرت إلى الخطأ ، فستجد أن الموجه الخاص بي هو معرّف غير معلن وذلك لأنني ارتكبت

86
00:06:16,100 --> 00:06:17,390
‫خطأ إملائيًا.

87
00:06:17,390 --> 00:06:22,820
‫لقد أطلقت على ناقل F اسم عوامة وربما كنت تصرخ على شاشاتك ، لكن من الجيد أن تظهر لك

88
00:06:22,820 --> 00:06:26,180
‫أنه حتى المبرمجين ذوي الخبرة يرتكبون أخطاء.

89
00:06:26,180 --> 00:06:30,890
‫أردنا استدعاء هذا المتجه الخاص بي ، لذلك سأعود إلى ملف الرأس وأعيد

90
00:06:30,890 --> 00:06:35,720
‫تسميته إلى المتجه الخاص بي ، والذي يجب أن يزيل المشكلة في ذهني.

91
00:06:35,720 --> 00:06:38,900
‫دعنا نمضي قدمًا ونضغط على زر الترجمة مرة أخرى.

92
00:06:38,900 --> 00:06:44,180
‫وهذا يمنحك فقط طعمًا لما يبدو عليه الأمر عندما ترتكب أخطاء ، وتحصل على خطأ في التجميع.

93
00:06:44,180 --> 00:06:45,280
‫يحدث ذلك في كل وقت.

94
00:06:45,300 --> 00:06:48,290
‫في الواقع ، من النادر جدًا عدم ارتكاب الأخطاء.

95
00:06:48,290 --> 00:06:54,800
‫في المرة الأولى التي تقوم فيها بشيء ما ، سنمضي قدمًا ونضغط على "تشغيل" وسنرى القيمة التي نحصل عليها

96
00:06:54,830 --> 00:06:56,300
‫في جزء التفاصيل.

97
00:06:56,300 --> 00:07:05,060
‫يمكنك أن ترى الآن أن x الخاص بي قد تم ضبطه على واحد لأن هذه كانت القيمة في المكون x لمتغير المتجه

98
00:07:05,060 --> 00:07:05,990
‫الخاص بي.

99
00:07:06,080 --> 00:07:09,800
‫لذلك أود أن أتحداك لتعيين قيمة متجه.

100
00:07:09,830 --> 00:07:11,930
‫لقد حصلنا على القيم من المتجه.

101
00:07:11,930 --> 00:07:13,070
‫الآن دعنا نحاول وضعها.

102
00:07:13,070 --> 00:07:17,240
‫حاول بشكل أساسي استخدام عامل التشغيل النقطي لتعيين قيمة.

103
00:07:17,480 --> 00:07:25,850
‫حاول قلب الجانبين من هذا يساوي بحيث يكون لدينا X على اليمين والمتجه على اليسار بدلاً

104
00:07:25,850 --> 00:07:27,050
‫من ذلك.

105
00:07:27,050 --> 00:07:30,500
‫وماذا لو غيرتها إلى Y أو Z؟

106
00:07:30,530 --> 00:07:32,090
‫هل يوجد فرق هناك؟

107
00:07:32,120 --> 00:07:33,500
‫أوقف الفيديو واذهب.

108
00:07:36,830 --> 00:07:37,430
‫تمام.

109
00:07:37,430 --> 00:07:37,940
‫مرحبًا بعودتك.

110
00:07:37,940 --> 00:07:40,640
‫لذلك سأحاول قلب هذين الاثنين.

111
00:07:40,640 --> 00:07:49,010
‫دعنا ننتقل إلى C ++ وفي بدء التشغيل بدلاً من ذلك ، ما سأقوله هو أن المتجه ، النقطة y تساوي

112
00:07:49,010 --> 00:07:52,910
‫x ، ثم نضع فاصلة منقوطة في نهاية السطر.

113
00:07:52,910 --> 00:07:57,770
‫وهذه هي الطريقة التي يمكننا بها تعيين القيم داخل بنية أيضًا.

114
00:07:57,770 --> 00:08:06,890
‫لذا دعنا نعود إلى Unreal ونعيد التحويل البرمجي ، ثم يمكننا المضي قدمًا وتحديد بعض القيمة في X الخاص بي.

115
00:08:06,890 --> 00:08:08,960
‫لذا سأضع القيمة خمسة هنا.

116
00:08:10,010 --> 00:08:15,650
‫ثم سأمضي قدمًا وألعب وألقي نظرة على جزء التفاصيل للمنصة المتحركة.

117
00:08:15,650 --> 00:08:24,620
‫وبالتأكيد ، تم تحديث قيمة y للمتجه عند بدء اللعب بالقيمة الموجودة في x الخاص بي.

118
00:08:24,740 --> 00:08:26,060
‫لذا تهانينا.

119
00:08:26,060 --> 00:08:33,080
‫لقد رأينا كيفية استخدام أنواع أكثر تعقيدًا وهي أنواع مركبة مثل البنيات في C ++.

120
00:08:33,080 --> 00:08:34,910
‫سأراك في المحاضرة القادمة.

