‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะดูเวกเตอร์และโดยทั่วไปแล้วจะซับซ้อนกว่า เช่น โครงสร้างใน
‫C++ และวิธีที่เราสามารถเข้าถึงแต่ละส่วนของทั้งสองชุดและรับส่วนเหล่านั้นจากโครงสร้าง
‫มาดำน้ำกันเถอะ
‫ดังนั้นเราจึงได้เรียนรู้วิธีจัดการกับประเภทข้อมูลพื้นฐานใน C++ และสร้างตัวแปรและกำหนดให้กับพวกมัน หรือแม้แต่คำนวณพื้นฐานบางอย่างกับพวกมัน
‫แต่ถ้าเราต้องการจัดการกับประเภทที่ซับซ้อนกว่านี้ เช่น เวกเตอร์และการแปลงล่ะ
‫กระบวนการนี้คล้ายกันมากจริงๆ
‫เริ่มต้นด้วยการล้างรหัสทดสอบที่เรามีอยู่แล้ว
‫ฉันจะลบคุณสมบัติทั้งหมดของฉัน
‫สำหรับฉันนั่นคือบรรทัดที่ 26 ลงไปที่ 51
‫และฉันจะไปที่ไฟล์ C++ และลบบรรทัดที่ 19 ถึง 23 ซึ่งเป็นที่ที่ฉันทำงานทั้งหมดกับตัวแปรที่ฉันเพิ่งลบไป
‫ตอนนี้ Begin Play ว่างเปล่าทั้งหมด และเรากลับไปที่ตารางแรก
‫ตอนนี้สิ่งที่ฉันต้องการจะทำคือเพิ่มคุณสมบัติใหม่ของคุณ
‫ดังนั้นตัวพิมพ์ใหญ่ทั้งหมดจะแก้ไขที่ไหนก็ได้ และฉันจะให้เวกเตอร์ F ชนิดนี้สังเกตเห็นตัวพิมพ์ใหญ่ F ตัวพิมพ์ใหญ่ V ตัวพิมพ์ใหญ่
‫และนี่คือวิธีที่เราจัดการกับเวกเตอร์ที่เราจัดการในพิมพ์เขียว
‫พวกมันเป็นเวกเตอร์เดียวกันภายใต้พื้นผิว แต่นี่คือวิธีที่เราพิมพ์มันใน C++
‫F ที่นำหน้ามันทำให้เรารู้ว่านี่คือโครงสร้างในลักษณะเดียวกับ A ที่ดำเนินการกับแพลตฟอร์มที่เคลื่อนไหวทำให้เรารู้ว่านั่นคือนักแสดง
‫นั่นไม่ใช่สิ่ง C ++
‫นั่นคือหลักการตั้งชื่อที่ไม่เป็นจริงสำหรับการตั้งชื่อคลาส โครงสร้าง และประเภทที่แตกต่างกัน
‫สิ่งที่เราจะทำคือตั้งชื่อตัวแปรนี้ และมันทำงานเหมือนกับว่ามันเป็น
‫float หรือ int
‫เราสามารถเรียกมันว่าโฟลตของฉันได้ตัวอย่างเช่น
‫มันต้องไม่มีช่องว่าง
‫และถ้าเราใส่เครื่องหมายอัฒภาคต่อท้ายบรรทัดตรงนี้ ก็เท่านั้น
‫เราได้ประกาศตัวแปรใหม่ที่จะมองเห็นได้ในบานหน้าต่างรายละเอียดของเราในเครื่องมือแก้ไข แต่นั่นไม่เพียงพอสำหรับฉัน
‫ฉันต้องการให้ค่าเริ่มต้นนี้แตกต่างจากค่าเริ่มต้น 000
‫ในการทำเช่นนั้น เราต้องอัปเดตอภิธานศัพท์ของเราด้วยคำศัพท์ใหม่
‫เราต้องการคอนสตรัคเตอร์ ซึ่งโดยพื้นฐานแล้วก็คือบางอย่างใน C++ ที่สร้างโครงสร้างหรือค่าคลาสใหม่
‫ดังนั้นถ้าเราจะสร้างคอนสตรัคเตอร์สำหรับเวกเตอร์ วิธีนี้จะได้ผลก็คือ เราต้องการกำหนดค่าให้เท่ากัน
‫และโดยปกติเมื่อเราจัดการกับจำนวนเต็มหรือทศนิยม เราสามารถใช้บางอย่างเช่นหนึ่งหรือเป็นจริง
‫มีค่าในตัวที่ช่วยให้เราสามารถตั้งค่าประเภทพื้นฐานเหล่านั้นได้
‫แต่เมื่อเรามีประเภทที่ซับซ้อนมากขึ้นเช่น struct เราจำเป็นต้องใช้ตัวสร้างและตัวสร้างจะมีชื่อเดียวกันกับประเภทข้อมูลเสมอ
‫มันจะเป็นเวกเตอร์ f สะกดเหมือนกันทุกประการ แล้วคุณเปิดวงเล็บและภายในวงเล็บ
‫คุณให้ค่าที่คุณต้องการ
‫ดังนั้น X, Y และ Z คือสิ่งที่ประกอบกันเป็นเวกเตอร์
‫เราจึงคั่นด้วยเครื่องหมายจุลภาคได้หนึ่ง สอง และสาม จากนั้นเราก็ปิดวงเล็บและใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด
‫และนั่นจะให้ค่าเริ่มต้นหนึ่ง สอง และสามใน X, Y และ Z สำหรับเวกเตอร์นี้
‫มาลองดูกัน
‫กลับไปที่ Unreal แล้วกดปุ่มคอมไพล์
‫และเมื่อทำสำเร็จแล้ว เราก็สามารถตรวจสอบได้ว่าเราได้เลือกนักแสดงแพลตฟอร์มเคลื่อนที่ในค่าผิดปกติของเราแล้ว
‫และดูที่แผงรายละเอียดและดูว่าจริง ๆ แล้วเรามีคุณสมบัติใหม่ที่เรียกว่า My Float
‫ค่าอื่นๆ ถูกนำออกไปแล้ว และค่าในตำแหน่งต่างๆ ของ X, Y และ Z คือ 1, 2 และ
‫3 ตามที่เราคาดไว้
‫ดีมาก
‫แต่ถ้าฉันต้องการรับค่าเหล่านี้และติดมันไว้ในคุณสมบัติอื่นล่ะ?
‫ดังนั้นหากฉันต้องมีคุณสมบัติอื่นที่ถูกทำเครื่องหมายเป็นแก้ไขที่ใดก็ได้เพื่อให้เราสามารถเห็นมันในตัวตรวจสอบประเภท
‫float ที่เรียกว่า x ของฉันและเราจะตั้งค่าเริ่มต้นเป็นศูนย์เพียงเพื่อที่เราจะได้เห็นว่าเรากำลังเปลี่ยนมัน
‫และสิ่งที่ฉันต้องการทำคือจับค่า x จากโฟลตของฉันในการเริ่มเล่น และฉันต้องการตั้งค่ามันในตัวแปร
‫x ของฉัน
‫ไปที่ไฟล์ C++ แล้วเริ่มเล่นตามบรรทัดที่เขียนว่า ใหญ่มาก เราจะตั้งค่า x ให้เท่ากับสิ่งที่เราต้องการได้บางอย่างจากเวกเตอร์
‫แต่เราไม่ต้องการ เวกเตอร์ทั้งหมดของฉัน
‫นั่นจะเป็นข้อผิดพลาด
‫เราไม่สามารถตั้งค่าเวกเตอร์ให้เป็นทศนิยมได้ เราแค่ต้องการส่วน x ของเวกเตอร์นั้น
‫เพื่อให้เข้าใจว่า เราต้องเข้าใจแนวคิดของโอเปอเรเตอร์
‫ตัวดำเนินการเป็นสัญลักษณ์ใน C ++ ที่ทำบางสิ่ง
‫เราเคยเห็นมาบ้างแล้ว
‫เราได้เห็นตัวดำเนินการบวก ซึ่งรวมสองสิ่งเข้าด้วยกัน
‫มีตัวดำเนินการลบด้วย
‫มีตัวดำเนินการความเท่าเทียมกัน ตัวดำเนินการเท่ากับ ซึ่งกำหนด
‫สิ่งของ.
‫เราใช้นี่ตรงนี้ในบรรทัดที่ 19
‫นั่นคือโอเปอเรเตอร์ที่กำหนดค่าเวกเตอร์ของฉันให้กับ X ของฉัน
‫แล้วเราก็มีโอเปอเรเตอร์อีกตัวหนึ่ง ซึ่งเราต้องรู้ว่าอันไหนคือตัวดำเนินการ DOT
‫เป็นโอเปอเรเตอร์ที่ได้รับบางสิ่งจากภายในโครงสร้างหรือคลาส
‫เราอยากได้ X จากภายในเวกเตอร์
‫เราใช้ตัวดำเนินการจุด เราทำ dot x ตอนนี้ เราไม่ใช้ช่องว่างระหว่างเวกเตอร์กับ x ตรงนี้
‫เราปล่อยให้สิ่งเหล่านี้ทำงานด้วยกัน ตามปกติแล้วเราจะทิ้งสิ่งต่างๆ ไว้ แม้ว่าจะไม่จำเป็นต้องเป็นข้อผิดพลาดในการวางช่องว่างก็ตาม
‫เรามีเวกเตอร์ x ของฉันควรได้ค่า x ของเวกเตอร์แล้วใส่ลงใน x float
‫ดังนั้นเราจึงใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด และตามปกติแล้ว ฉันไม่สนใจเครื่องหมายยัติภังค์สีแดง เพราะบางครั้งอาจใช้เวลานานในการอัปเดตและบางครั้งก็ไม่ถูกต้อง
‫จากนั้นเราจะเข้าสู่การเขียนโค้ดแบบสดและกดปุ่มที่คอมไพล์ใหม่ และตรวจสอบว่าเราได้ผลลัพธ์ที่สำเร็จหรือไม่
‫และคุณเห็นไหม เรามีความล้มเหลวในการสร้าง
‫และถ้าคุณดูที่ข้อผิดพลาด มันบอกว่าเวกเตอร์ของฉันเป็นตัวระบุที่ไม่ได้ประกาศ และนั่นเป็นเพราะฉันพิมพ์ผิด
‫ฉันเรียกเวกเตอร์ F ว่าลอยของฉัน และคุณอาจจะกรีดร้องที่หน้าจอของคุณ แต่เป็นการดีที่จะแสดงให้คุณเห็นว่าแม้แต่โปรแกรมเมอร์ที่มีประสบการณ์ก็ยังทำผิดพลาดได้
‫เราต้องการเรียกมันว่าเวกเตอร์ของฉัน ดังนั้นฉันจะกลับไปที่ไฟล์ส่วนหัว
‫และเปลี่ยนชื่อเป็นเวกเตอร์ ซึ่งน่าจะขจัดปัญหาที่เกิดขึ้นในสมองของฉัน
‫ไปข้างหน้าและคลิกปุ่มคอมไพล์อีกครั้ง
‫และนั่นจะทำให้คุณได้รู้ว่ามันเป็นอย่างไรเมื่อคุณทำผิดพลาด คุณจะได้รับข้อผิดพลาดในการรวบรวม
‫มันเกิดขึ้นตลอดเวลา
‫อันที่จริง หายากมากที่จะไม่ทำผิดพลาด
‫ครั้งแรกที่คุณทำอะไรบางอย่าง เราจะไปต่อและกดเล่น และดูว่าเราได้ค่าอะไรในบานหน้าต่างรายละเอียด
‫คุณสามารถเห็นได้ว่า x ของฉันถูกตั้งค่าเป็นหนึ่งเพราะนั่นคือค่าในองค์ประกอบ x ของตัวแปรเวกเตอร์ของฉัน
‫ผมอยากท้าให้คุณตั้งค่าเวกเตอร์
‫เราได้รับค่าจากเวกเตอร์แล้ว
‫ทีนี้มาลองตั้งค่ากัน
‫โดยทั่วไปลองใช้ตัวดำเนินการจุดเพื่อตั้งค่า
‫ลองพลิกสองด้านของมันให้เท่ากัน เพื่อให้เรามี X ของฉันอยู่ทางขวา และเวกเตอร์ของฉันอยู่ทางซ้ายแทน
‫แล้วถ้าเปลี่ยนเป็น Y หรือ Z ล่ะ?
‫มีความแตกต่างกันหรือไม่?
‫หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫ผมจะลองพลิกสองตัวนี้ดู
‫ลองไปที่ C++ และใน Begin Play แทน สิ่งที่ผมจะพูดคือเวกเตอร์ ดอท y เท่ากับ x ของผม แล้วใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด
‫และนี่คือวิธีที่เราสามารถตั้งค่าภายใน struct ได้เช่นกัน
‫กลับไปที่ Unreal แล้วคอมไพล์ใหม่ จากนั้นเราก็ไปตั้งค่าบางอย่างใน X ของฉัน
‫ผมจะใส่ค่าของ 5 ตรงนี้
‫จากนั้นฉันจะไปเล่นและดูรายละเอียดของแพลตฟอร์มที่กำลังเคลื่อนที่
‫และแน่นอนว่า ค่า y ของเวกเตอร์ของฉัน ถูกอัพเดตในการเริ่มเล่นด้วยค่าใน x ของฉัน
‫ขอแสดงความยินดีด้วย
‫เราได้เห็นวิธีการใช้ประเภทที่ซับซ้อนมากขึ้นที่เป็นประเภทผสมเช่น struct ใน C ++
‫แล้วพบกันใหม่ในบทเรียนหน้าครับ