Hướng Dẫn Thực Hành Về Bộ Plugin Neovim Cho Unreal Engine
Tăng Cường Quy Trình Làm Việc Với Unreal Engine
Chào các bạn! Trong bài viết trước, tôi đã giới thiệu một bộ plugin Neovim mà tôi đã phát triển để cách mạng hóa quá trình phát triển Unreal Engine. Bộ plugin này đã trở nên mạnh mẽ hơn rất nhiều kể từ đó.
Lần này, thay vì chỉ là một giới thiệu, tôi muốn cung cấp cho bạn một hướng dẫn thực hành, từng bước về cách sử dụng các plugin này cùng nhau trong một quy trình phát triển thực tế.
Demo Nhanh Về Bộ Plugin
- UEP.nvim: Là lõi của bộ plugin, quản lý chỉ mục dự án, bộ nhớ cache và các hoạt động tệp.
- UBT.nvim: Giao diện của bạn cho Unreal Build Tool (UBT).
- UCM.nvim: Tạo và quản lý cặp lớp C++ (
.h/.cpp) cực nhanh. - ULG.nvim: Một trình xem nhật ký biên dịch.
- neo-tree-unl.nvim: Nguồn
neo-treetùy chỉnh cung cấp cái nhìn logic về dự án UE của bạn.
💾 Cài Đặt
Dưới đây là cấu hình mẫu cho lazy.nvim để bạn bắt đầu. Điều này sẽ cài đặt toàn bộ bộ plugin.
lua
-- lazy.nvim spec
return {
{
"taku25/UEP.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
-- hoặc "ibhagwan/fzf-lua",
},
config = function()
require("UEP").setup()
end,
},
{ "taku25/UBT.nvim", config = function() require("UBT").setup() end },
{ "taku25/UCM.nvim", config = function() require("UCM").setup() end },
{ "taku25/ULG.nvim", config = function() require("ULG").setup() end },
{
"taku25/neo-tree-unl.nvim",
dependencies = {
"nvim-neo-tree/neo-tree.nvim",
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons", -- tùy chọn
"MunifTanjim/nui.nvim",
},
},
}
🚀 Quy Trình Làm Việc
Bước 1: Chỉ Mục Dự Án - Nền Tảng
Đầu tiên, điều quan trọng nhất là điều hướng đến thư mục gốc của dự án Unreal Engine của bạn (nơi có tệp .uproject) và chạy lệnh sau:
:UEP refresh
Lệnh này quan trọng nhất trong toàn bộ bộ plugin. Nó quét toàn bộ dự án của bạn, phân tích cấu trúc module, giải quyết các phụ thuộc và xây dựng một bộ nhớ cache thông minh. Bộ nhớ cache này sẽ giúp tất cả các tìm kiếm tệp, cây thư mục và biên dịch trở nên cực nhanh.
- Chạy Lần Đầu: Điều này có thể mất một chút thời gian tùy thuộc vào kích thước dự án của bạn. Hãy kiên nhẫn; nó rất đáng giá.
- Các Lần Chạy Tiếp Theo: Nó chỉ kiểm tra sự khác biệt, làm cho nó cực kỳ nhanh chóng.
Khi Nào Sử Dụng refresh!, refresh! --force
:UEP refresh!: Sử dụng lệnh này sau khi chuyển nhánh trong Git hoặc kiểm tra tệp từ Perforce. Nó sẽ thông minh so sánh các hash tệp để chỉ cập nhật những gì đã thay đổi.:UEP refresh! --force: Sử dụng lệnh này nếu bạn nghi ngờ bộ nhớ cache bị hỏng. Nó sẽ xóa bộ nhớ cache cũ và xây dựng lại tất cả từ đầu.
Khi một dự án đã được chỉ mục, bộ plugin sẽ ghi nhớ nó. Từ bây giờ, bạn có thể ở bất kỳ thư mục nào khi bắt đầu Neovim và nhảy thẳng vào dự án của mình bằng lệnh:
:UEP cd
Bước 2: Chỉnh Sửa Mã - Điều Hướng Nhanh Chóng
Với bộ nhớ cache đã được xây dựng, hãy bắt đầu viết mã. Có hai cách chính để tìm và mở tệp.
1. Cây Thư Mục Logic (:UEP tree)
Nếu bạn đã cài đặt neo-tree.nvim, đây là một thay đổi lớn giúp vượt qua bất kỳ giải pháp tìm kiếm tiêu chuẩn nào.
:UEP tree [--all-deps]
Lợi ích thực sự của lệnh này là khả năng chuyển đổi ngữ cảnh một cách linh hoạt.
- Mặc Định (
:UEP tree): Chỉ hiển thị bộ module tối thiểu liên quan trực tiếp đến mã game của bạn (Phụ Thuộc Cạn). Điều này giữ cho cái nhìn của bạn sạch sẽ và tập trung. - Với
--all-deps: Hiển thị tất cả phụ thuộc đệ quy, bao gồm cả các module Engine cơ bản. Đây là một công cụ cực kỳ mạnh mẽ khi bạn cần cái nhìn tổng quan để hiểu cách mã của bạn kết nối với engine bên dưới.
Cái nhìn động này cho phép bạn truy cập các tệp liên quan nhanh hơn so với việc điều hướng một cấu trúc thư mục vật lý cứng nhắc.
2. Trình Chọn Tốc Độ Cao (:UEP files)
Khi bạn biết tên tệp bạn muốn, trình chọn là cách nhanh nhất để đến đó.
:UEP files [--all-deps]
Nó cung cấp một danh sách có thể tìm kiếm mờ của tất cả các tệp nguồn và cấu hình trong đồ thị phụ thuộc của dự án của bạn.
Bước 3: Tạo & Quản Lý Tệp - Ma Thuật Của UCM
Một trong những phần tốn thời gian nhất trong phát triển UE là tạo cặp tệp mới .h và .cpp trong các thư mục đúng. UCM.nvim làm cho quá trình này trở nên nhanh chóng và dễ dàng.
:UCM new
Lệnh này sẽ tương tác nhắc bạn nhập tên lớp, lớp cha và đích đến. Nó sẽ tạo ra các tệp được định dạng hoàn hảo với macro _API, bảo vệ bao gồm, và nhiều hơn nữa. Các lệnh delete, rename và move cũng có sẵn để quản lý an toàn các cặp tệp.
🔥 Tăng Cường Với Tích Hợp neo-tree
Nếu bạn đang sử dụng nguồn neo-tree-unl.nvim, bạn có thể thực hiện các hành động này trực tiếp từ cây thư mục chỉ với một phím bấm, giống như trong một IDE.
a: Thêm một lớp mới (UCM new)d: Xóa cặp lớp (UCM delete)r: Đổi tên cặp lớp (UCM rename)m: Di chuyển cặp lớp (UCM move)
Bước 4: Biên Dịch & Xem Nhật Ký
Khi bạn đã sẵn sàng để biên dịch, UBT.nvim sẽ xử lý lệnh gọi đến Unreal Build Tool.
:UBT build
Sử dụng :UBT build! để mở một trình chọn và chọn cấu hình biên dịch cụ thể (DebugGame, Development Editor, v.v.).
Để xem đầu ra biên dịch theo thời gian thực hoặc để xem lại nhật ký trước đó, sử dụng ULG.nvim:
:ULG start
Bước 5: Chạy Dự Án Của Bạn - Ngay Từ Neovim
Khi biên dịch của bạn hoàn tất, bạn có thể khởi chạy nó mà không cần rời khỏi trình chỉnh sửa.
-
Khởi Chạy Trình Biên Tập:
:UBT runĐây là lệnh phổ biến nhất, khởi chạy toàn bộ Unreal Editor với dự án của bạn được tải.
-
Chọn Một Cài Đặt Để Chạy:
:UBT run!Dấu
!mở một trình chọn UI. Nếu bạn chọn một cài đặt vớiIsEditor = false(nhưWin64DebugGame), nó sẽ khởi chạy trò chơi độc lập. Nếu bạn chọn một cài đặt vớiIsEditor = true, nó sẽ khởi chạy trình chỉnh sửa.
Bước 6: Lập Trình Trực Tiếp & Lệnh Từ Xa
Lập trình trực tiếp là một tính năng mạnh mẽ, nhưng phím tắt mặc định Ctrl+Alt+F11 khá khó khăn, đặc biệt là với những người sử dụng bàn phím 40% hoặc 60%. ULG.nvim giải quyết điều này với tính năng lệnh từ xa.
Thiết Lập: Trong Unreal Editor
Đầu tiên, bạn cần kích hoạt plugin Remote Control API trong Trình Biên Tập. (Lưu ý: Tùy thuộc vào phiên bản UE của bạn, có thể nó được gọi là Remote Execution hoặc cái gì đó tương tự).
-
Kích hoạt plugin
Remote Control APItừ menuPlugins. -
Vào
Project Settings->Remote Controlvà kiểm tra các hộp sau:Enable Remote ControlAllow Remote Console Command Execution
Thực Hiện: Kích Hoạt Lập Trình Trực Tiếp Từ Neovim!
-
Đảm bảo rằng Unreal Editor của bạn đang chạy.
-
Trong Neovim, chạy
:ULG startđể mở cửa sổ nhật ký. -
Với cửa sổ nhật ký đang hoạt động, nhấn phím
P. Một dòng lệnh sẽ mở ra. -
Nhập
livecoding.compilevà nhấn Enter. Việc biên dịch sẽ được thực hiện!
Bạn cũng có thể chạy các lệnh console quen thuộc như stat fps và stat unit theo cách này.
🔥 Tăng Cường Với Một Phím Tắt
Tính năng này cũng được công khai như một API, rất phù hợp cho các phím tắt.
lua
-- Ví dụ: ánh xạ <leader>lc để kích hoạt livecoding.compile
vim.keymap.set("n", "<leader>lc", function()
require("UNL.api").kismet_command("livecoding.compile")
end, { desc = "[L]ập [C]hương Trình" })
Bây giờ bạn có thể kích hoạt biên dịch từ bất kỳ đâu, bất kỳ lúc nào, chỉ với một phím bấm đơn giản.
Bước 7: Tăng Cường LSP Của Bạn - Lợi Thế Tự Động Hóa
Để có được IntelliSense hoàn hảo từ clangd, bạn cần một compile_commands.json cập nhật và các tiêu đề được tạo bởi Unreal Header Tool (UHT). UBT.nvim có thể xử lý điều này cho bạn.
:UBT gencompiledb: Tạocompile_commands.json.:UBT genheader: Chạy UHT để tạo tiêu đề.
Thậm chí tốt hơn, bạn có thể làm cho điều này hoàn toàn tự động. Bằng cách kích hoạt các cờ automation trong cấu hình UBT.nvim của bạn, các lệnh này sẽ tự động chạy trong nền khi bạn thực hiện các thao tác như tạo một lớp mới với :UCM new.
lua
-- Ví dụ cấu hình UBT.nvim
require("UBT").setup({
automation = {
-- Tự động chạy UHT sau khi thay đổi tệp (từ UCM, v.v.)
auto_gen_header_after_lightweight_refresh = true,
-- Cũng tạo tệp dự án sau khi chạy UHT thành công
auto_gen_project_after_gen_header_success = true,
-- Cũng tạo tệp dự án sau khi hoàn thành :UEP refresh
auto_gen_project_after_refresh_completed = true,
},
})
Kích hoạt những thứ này, và bạn có thể tập trung hoàn toàn vào việc viết mã C++ trong khi các plugin xử lý các tác vụ quản lý dự án tẻ nhạt cho bạn.
Kết Luận
Hy vọng rằng hướng dẫn này đã cho bạn thấy cách bạn có thể biến Neovim thành một môi trường phát triển thực sự đẳng cấp cho Unreal Engine.
Hãy thử nghiệm bộ plugin này! Phản hồi, đóng góp và các ngôi sao trên GitHub luôn được đánh giá cao và mang lại động lực lớn cho tôi. Chúc bạn lập trình vui vẻ!