‫Xin chào và chào mừng.
‫Bài giảng này chúng ta sẽ hiển thị một màn hình rời và chúng ta sẽ thực
‫hiện hoàn toàn từ bên trong C ++ để tạo ra widget đó.
‫Hãy đi sâu vào và xem nó được thực hiện như thế nào.
‫Vì vậy, chúng tôi muốn hiển thị một số giao diện người dùng khi người chơi của chúng tôi chết để cho họ biết điều gì đang xảy ra mà họ đã
‫mất và cấp độ sắp được thiết lập lại.
‫Vì vậy, không có gì ngạc nhiên đối với họ.
‫Vì vậy, chúng ta sẽ cần tạo một số giao diện người dùng, một tiện ích giao diện người dùng, một UMG, tiện ích đồ họa chuyển động không thực.
‫Vì vậy, trước hết hãy làm điều đó bằng cách tạo một thư mục để lưu trữ giao diện người dùng.
‫Và tôi đã biết chúng ta sẽ có hai mục giao diện người dùng, vì vậy tôi nghĩ tôi sẽ có một thư mục giao diện người dùng ở
‫đây và sau đó chúng ta hãy vào đây và nhấp chuột phải và sau đó đi, bạn nên làm điều này trước đây, nhưng hãy để tôi. Tôi sẽ hướng
‫dẫn bạn qua.
‫Chúng ta sẽ đi đến phần giao diện người dùng, sau đó chọn bản thiết kế tiện ích và tiền
‫tố chúng ta sẽ sử dụng là dấu gạch dưới WP và sau đó nó sẽ bị mất màn hình.
‫Bây giờ bạn có thể thực hiện một số lớp cơ sở cho loại nội dung này trong C ++, nhưng chúng tôi sẽ không đề cập đến vấn đề
‫này trong phần này.
‫Nói chung là không cần thiết để làm điều đó và thực hiện công việc này trong Blueprint dễ dàng hơn nhiều.
‫Không có nhiều lợi thế khi làm điều đó trong C ++ trừ khi bạn là một giao diện người dùng sẽ trở nên cực kỳ phức tạp và
‫bạn muốn đưa một số logic giao diện người dùng đó vào C ++.
‫Trong trường hợp đó, đây không phải là trường hợp, vì vậy chúng ta có thể tiếp tục và sử dụng các bản thiết kế.
‫Xét cho cùng, giao diện người dùng là một thứ trực quan.
‫Sẽ rất hợp lý khi sử dụng một công cụ trực quan để kết hợp chúng lại với nhau ngay bây giờ vì bạn đã biết về cách tạo
‫các widget.
‫Sau đó, tôi sẽ đưa ra điều này như một thách thức với bạn để thiết lập một màn hình thua.
‫Chúng tôi muốn thêm một số văn bản giải thích rằng người chơi đã thua và chúng tôi sắp khởi động lại.
‫Muốn đặt văn bản đó ở vị trí trung tâm, làm cho nó hiển thị, đảm bảo rằng nó hiển thị trong trò chơi.
‫Tuy nhiên, như tôi đã nói, hãy giải thích rằng sắp tới sẽ có một cuộc khởi động lại.
‫Và sau khi bạn đã thử thách thức này, chúng ta sẽ xem xét cách chúng ta có thể tạo ra điều này từ C ++.
‫Có thể bạn đã thấy cách thực hiện điều này trong Blueprint trước đây.
‫Chúng ta sẽ xem cách chúng ta có thể làm điều đó từ bên trong C ++.
‫Vì vậy, hãy tạm dừng video và tiếp tục.
‫Được rồi, chào mừng bạn trở lại.
‫Vì vậy, tôi sẽ đi và tạo, trước hết, một chút văn bản.
‫Vì vậy, tôi muốn tìm kiếm trong bảng màu bên trái, tìm kiếm mục văn bản và đưa mục đó vào.
‫Tôi sẽ thay đổi nó để bạn mất văn bản đối thoại khá đơn giản và không tưởng tượng ở đây và chúng tôi sẽ thay đổi
‫màu sắc và độ mờ và hoặc giao diện thành màu đỏ để làm rõ ràng rằng họ
‫đã mất.
‫Và chỉ cần xoa nó thêm một chút nữa và tôi sẽ mở rộng phông chữ của chúng tôi và thay đổi kích thước lớn hơn.
‫Và sau đó tôi sẽ mở rộng hộp xung quanh văn bản của chúng ta và tôi sẽ căn giữa văn bản của chúng ta.
‫Vì vậy, để giải thích, tôi sẽ căn giữa một dòng ở văn bản.
‫Và nếu tôi mở rộng ra, hãy xem liệu có nơi nào khác mà tôi có thể căn giữa trong ghi chú ở đó
‫không.
‫Vì vậy, tôi sẽ chỉ làm cho kích thước hộp gần như phù hợp và sau đó tôi sẽ đi đến căn chỉnh của tôi và các
‫neo của tôi và những thứ tương tự.
‫Và tôi sẽ chọn menu thả xuống cho neo và chọn giá trị đặt trước cho neo vào giữa, bởi vì đó là
‫điều tôi muốn làm.
‫Tôi muốn đặt căn chỉnh của mình thành 0. 5 và 0. 5, về cơ bản có nghĩa là chúng ta đang căn chỉnh với tâm
‫của đối tượng hơn là góc trên cùng bên trái.
‫Tôi sẽ làm lại mỏ neo.
‫Được chứ.
‫Điều đó không phải là rất hữu ích.
‫Và sau đó là vị trí X tại sao tôi nghĩ nếu tôi chỉ đặt vị trí bên cạnh số 0 và số không bởi
‫vì tôi đã đặt neo của mình như vậy, thì vị trí mất của tôi sẽ ở đâu đó ở giữa và tôi sẽ
‫di chuyển nó tăng nhẹ hơn bao giờ hết.
‫Giữ vị trí X của tôi ở vị trí 0, vị trí Y -50, bởi vì tôi muốn thêm vào một số văn bản phụ nói rằng trên thực tế, có
‫thể dễ dàng hơn chỉ cần sao chép văn bản khác ở đây vì nó đã được thiết lập tất cả những
‫gì tôi cần.
‫Tôi chỉ muốn làm cho nó nhỏ hơn một chút.
‫Định vị lại vị trí 0 và tôi sẽ nói rằng cấp độ sẽ khởi động lại sau 5 giây và tôi sẽ làm cho kích thước phông chữ đó
‫nhỏ hơn nhiều.
‫Vì vậy, nó ít ở mặt của bạn hơn, một cái gì đó như thế này, và sau đó chỉ cần di
‫chuyển nó xuống một chút, một chút và tiếp tục đặt lại vị trí X đó về 0 và 100% hài lòng với vị trí.
‫Tôi sẽ nâng nó lên một chút nữa.
‫Nếu tôi giữ phím shift, thì tôi có thể khóa nó vào trục mà tôi đang di chuyển sao cho nó ít nhiều ở giữa
‫như vậy.
‫Được rồi, vì vậy tôi hài lòng với điều đó.
‫Bây giờ chúng ta cần phải tiếp tục và thử và sinh ra thứ đó.
‫Chung ta se lam chuyện đo như thê nao?
‫Trước hết, chúng ta sẽ cần biết lớp widget nào chúng ta sẽ tạo ra và chúng ta cần biết chúng
‫ta sẽ làm điều đó từ đâu bây giờ.
‫Như tôi đã nói, tôi nghĩ rằng một nơi tốt để làm điều này là từ chính bộ điều khiển trình phát.
‫Và chúng ta sẽ cần biết trong bộ điều khiển người chơi có lớp nào, lớp tiện ích nào mà chúng ta đang cố gắng tạo
‫ra?
‫Bây giờ, tôi biết đó là một lớp bản thiết kế, nhưng chúng ta vẫn cần nó là một lớp mà chúng ta đang cố gắng tạo ra.
‫Vì vậy, cách chúng tôi sẽ làm điều này là tạo một thuộc tính mới ở đây sẽ được chỉnh sửa ở
‫bất kỳ đâu và chúng tôi sẽ muốn đây là một lớp con của vì đây luôn là một cách tốt để đảm bảo rằng chúng
‫ta có một lớp.
‫Về cơ bản, bạn có thể sử dụng loại lớp của mình nếu bạn muốn, nhưng điều đó không hạn chế loại lớp chúng ta có
‫thể sử dụng.
‫Và ở đây chúng tôi muốn hạn chế việc bạn chỉ sử dụng widget.
‫Nếu bạn xem lại bản thiết kế của mình, bạn có thể xem liệu chúng tôi có đi đến một nơi nào đó trong đây hay không, bạn có thể tìm thấy ở đó.
‫Lớp cha đang sử dụng một widget mà chúng tôi biết khi bạn đặt tiền tố vào nó sẽ trở thành một lớp bạn sử dụng một widget.
‫Vì vậy, đây là một lớp con của.
‫Và sau đó chúng tôi sử dụng dấu ngoặc nhọn của chúng tôi sẽ là bạn sử dụng một tiện ích và tôi thực sự sẽ tuyên bố
‫rằng một ở đây thay vì làm bất kỳ bao gồm vì vậy lớp bạn sử dụng một tiện ích và sau đó
‫chúng ta sẽ gọi điều này là mất lớp màn hình chỉ để giữ cho nó thực sự rõ ràng những gì đang xảy ra ở đó.
‫Bây giờ tôi sẽ tiếp tục và biên dịch ở giai đoạn này trong khi chúng tôi làm những việc tiếp theo vì việc biên dịch khi thay đổi tệp tiêu
‫đề sẽ mất nhiều thời gian hơn một chút.
‫Bây giờ thực sự quá trình biên dịch sẽ không thành công ở giai đoạn này vì chúng tôi chưa đưa vào mô-đun UMG.
‫Chúng tôi không biết làm thế nào để làm điều đó.
‫Đừng lo lắng về quá trình biên dịch ở giai đoạn này và vào khoảng 9 phút trong video, chúng tôi sẽ
‫sửa lỗi này.
‫Bây giờ đã kết thúc trong C ++, những gì chúng ta sẽ làm là thực sự sinh ra widget đó.
‫Vì vậy, chúng tôi sẽ muốn làm điều đó thậm chí có thể trước thời điểm.
‫Nó không thực sự quan trọng vì bộ đếm thời gian không chờ đợi.
‫Nó chỉ đặt thời gian và sau đó chuyển thẳng sang dòng mã tiếp theo, vì vậy chúng tôi sẽ không phải đợi 5 giây nếu chúng tôi làm điều
‫này ngay lập tức, nếu chúng tôi tạo ra giao diện người dùng ngay sau đó, không thực sự quan trọng chúng tôi thực hiện điều này theo
‫thứ tự nào Trong.
‫Vì vậy, những gì chúng tôi sẽ muốn làm là sử dụng một chức năng có tên là tạo tiện ích con hiện không khả dụng.
‫Vì vậy, chúng tôi cần phải bao gồm một cái gì đó trước tiên.
‫Và những gì chúng ta sẽ bao gồm là tiện ích người dùng dấu gạch chéo chi tiết chuyển tiếp và đó là lớp
‫mà chúng ta cần truy cập vào chức năng tạo tiện ích con này.
‫Và về cơ bản chúng ta sẽ nói tạo widget.
‫Thực ra, nó cần phải được, hãy xem những gì chúng ta cần cung cấp cho nó.
‫Tôi sẽ đến F 12 để thực hiện nó.
‫Bạn có thể thấy nó hơi phức tạp để xem, nhưng chúng tôi có một tham số mẫu ở đây, về cơ bản theo mặc định, bạn sử
‫dụng một widget, vì vậy chúng tôi có thể không phải cung cấp thông số đó.
‫Và sau đó là đối tượng sở hữu và lớp mà chúng ta cần tạo và sau đó là tên tiện ích con mà chúng ta không nhất thiết phải
‫cung cấp và sau đó nó trả về dưới dạng con trỏ đến tiện ích con.
‫Vì vậy, những gì tôi thực sự sẽ làm là ở đây, chúng tôi sẽ cung cấp cho nó một đối tượng chủ sở hữu.
‫Giờ đây, chỉ những thứ nhất định mới có thể sở hữu tiện ích này.
‫Một trong những thứ đó thực sự là bộ điều khiển trình phát, vì vậy chúng ta có thể vượt qua điều này.
‫Sau đó, điều tiếp theo là chúng tôi muốn chuyển vào lớp con RT của bạn sử dụng một widget.
‫Chà, may mắn thay, chúng tôi đã định cấu hình nó trong tệp tiêu đề nên chúng tôi có thể tiếp tục và chuyển nó vào
‫và tôi sẽ ngăn việc thụt lề của tôi cố gắng sửa chính nó trong khi tôi chưa đặt dấu chấm phẩy ở cuối dòng
‫và sau đó chúng ta hãy đi và xem xét những gì khác.
‫Vâng, đó là nó.
‫Nó chỉ trả về widget tại thời điểm này.
‫Vì vậy, những gì chúng tôi có thể làm là có một con trỏ cho bạn, sử dụng một ngôi sao tiện ích và đây sẽ là màn hình mất tích của chúng tôi.
‫Vì vậy, chúng tôi đã có lớp màn hình mất.
‫Sau khi chúng tôi tạo tiện ích, nó sẽ trở thành một màn hình rời thực sự.
‫Điều tiếp theo chúng ta cần làm là hiển thị giao diện người dùng này.
‫Chúng tôi làm điều đó bằng cách thêm nó vào khung nhìn theo cách nói không thực.
‫Nhưng trước tiên, vì chúng tôi thêm vào khung nhìn bằng cách gọi một hàm trên màn hình xanh, chúng tôi cần đảm bảo rằng
‫nó không phải là con trỏ null.
‫Vì vậy, nếu mất màn hình không bằng con trỏ null, tại sao nó có thể là con trỏ null?
‫Nhân tiện, một thử thách nhỏ cho bạn xem liệu bạn có thể tìm ra lý do tại sao chúng ta có thể kết thúc với một con trỏ rỗng ở
‫đây hay không.
‫Một lý do là có thể chúng ta đã quên thiết lập lớp màn hình mất.
‫Và nếu trường hợp đó xảy ra và chúng ta không có tập hợp lớp màn hình xanh hợp lệ, thì việc tạo widget sẽ
‫trả về con trỏ null cho chúng ta.
‫Và chúng tôi không muốn điều đó xảy ra và chúng tôi không muốn chắc chắn gọi một hàm trên con trỏ null.
‫Vì vậy, chúng tôi sẽ làm mất mũi tên màn hình.
‫Và sau đó những gì chúng tôi muốn ở đây là một chức năng được gọi là thêm vào khung nhìn.
‫Việc này đơn giản chỉ cần thực hiện điều đó, hãy thêm nó vào màn hình để chúng ta có thể nhìn thấy màn hình lỏng lẻo đó.
‫Bây giờ, tôi cũng sẽ tiếp tục và biên dịch nó, chuyển sang một cuộn và mở bản thiết kế của
‫chúng tôi cho bộ điều khiển trình phát.
‫Vì vậy, bộ điều khiển người chơi game bắn súng ở đây.
‫Và chúng ta sẽ có thể thấy ở đâu đó trong đây một biến vẫn chưa xuất hiện.
‫Có lẽ tôi đã có một số lỗi xây dựng.
‫Hãy xem nhật ký tin nhắn.
‫Có, chúng ta có thể thấy một vài lỗi xây dựng ở đây, cụ thể là những lỗi kỳ lạ về việc thiếu các ký hiệu bên ngoài.
‫Nếu chúng tôi có chút gì đó nói về bạn, hãy sử dụng một tiện ích không khả dụng ngay bây
‫giờ nếu bạn quay lại với một vài bài giảng trước đây, chúng tôi biết rằng những loại lỗi này có xu hướng xảy ra khi chúng tôi
‫thiếu phụ thuộc mô-đun.
‫Vì vậy, nếu chúng ta mở CSS dot build dot CSS đơn giản của game bắn súng và tôi sẽ đóng thiết bị đầu cuối để có thêm
‫một chút không gian, thì bạn có thể thấy những gì chúng ta cần làm là thêm một phụ thuộc công khai mới ở đây.
‫Vì vậy, cuối cùng, chúng tôi sẽ thêm một phụ thuộc công khai cho UMG, vì vậy một dấu phẩy mới.
‫Và sau đó trong dấu ngoặc kép, chúng tôi sẽ đặt UMG và điều đó về cơ bản cho phép chúng tôi sử dụng tiện ích bao gồm mà chúng tôi đã có
‫ở đây, tiện ích người dùng gạch chéo về phía trước bản thiết kế.
‫Tất cả những thứ đó nằm trong một mô-đun riêng biệt với những thứ tiêu chuẩn được bao gồm.
‫Vì vậy, chúng tôi cần phải đi và nói với Unreal rằng chúng tôi muốn sử dụng mô-đun đó trong C ++ của chúng tôi.
‫Hãy tiếp tục và xây dựng và xem nó có hoạt động không.
‫Bây giờ điều đó có vẻ thành công.
‫Nếu chúng tôi truy cập trình chỉnh sửa và quay lại trình điều khiển chơi game bắn súng của mình, một số lý do tôi không nghĩ rằng nó đã
‫được tải lại đúng cách, vì vậy tôi phải nhấn biên dịch tại đây trong trình chỉnh sửa.
‫Bây giờ chúng ta quay trở lại bộ điều khiển người chơi game bắn súng.
‫Cuối cùng, bạn có thể thấy rằng mất lớp màn hình.
‫Chúng ta có thể nhấp vào menu thả xuống ở đó và đi và chọn AWP, gạch dưới màn hình mất ở đó, biên dịch,
‫lưu và hãy đi và tự giết mình.
‫Chúng tôi sẽ bị bắn vào một vài lần.
‫Bang Bang.
‫Và ở đó bạn đi.
‫Màn hình Lou của chúng tôi đã xuất hiện cho chúng tôi biết điều gì đang xảy ra, mức đó sắp khởi động lại sau 5 giây.
‫Và nó đã làm.
‫Nó có.
‫Vì vậy, bây giờ bạn không chỉ biết cách bạn có thể tạo đồ họa UMG mà còn biết cách bạn có thể tạo ra những thứ này từ C
‫++ chứ không phải từ Blueprint.
‫Bài giảng tiếp theo, chúng ta sẽ có cái nhìn ít bi quan hơn về mọi thứ và thử xem liệu chúng ta
‫có thể tạo ra một số điều kiện chiến thắng cho trò chơi này hay không.
‫Tôi sẽ gặp bạn ở đó.