0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Thực Hành Về Bộ Plugin Neovim Cho Unreal Engine

Đăng vào 4 tháng trước

• 8 phút đọc

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-tree tù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 Copy
-- 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:

Copy
: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:

Copy
: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.

Copy
: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 đó.

Copy
: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.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.

Copy
: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, renamemove 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.

Copy
: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:

Copy
: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:

    Copy
    :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:

    Copy
    :UBT run!

    Dấu ! mở một trình chọn UI. Nếu bạn chọn một cài đặt với IsEditor = 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ới IsEditor = 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ự).

  1. Kích hoạt plugin Remote Control API từ menu Plugins.

  2. Vào Project Settings -> Remote Control và kiểm tra các hộp sau:

    • Enable Remote Control
    • Allow Remote Console Command Execution

Thực Hiện: Kích Hoạt Lập Trình Trực Tiếp Từ Neovim!

  1. Đảm bảo rằng Unreal Editor của bạn đang chạy.

  2. Trong Neovim, chạy :ULG start để mở cửa sổ nhật ký.

  3. 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.

  4. Nhập livecoding.compile và 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 fpsstat 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 Copy
-- 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ạo compile_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 Copy
-- 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ẻ!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào