Làm cách nào tôi có thể xây dựng một trò chơi trong Unity với tối thiểu / không sử dụng trình chỉnh sửa trực quan?


24

Tôi muốn viết một trò chơi hoàn toàn bằng C #. Trong quá trình tìm kiếm một công cụ, tôi đã tìm thấy Unity3D, nhưng tất cả các hướng dẫn và tài liệu đều nói về một trình soạn thảo trực quan và Unity IDE mà bạn nhấp và chỉ xung quanh để tạo cảnh và kịch bản.

Tôi không muốn làm điều đó. Tôi thích bảo hiểm mã đầy đủ hơn các nhà thiết kế trừu tượng hóa mọi thứ từ tôi. Tôi chỉ muốn viết mã C # thuần túy từ đầu hoặc nếu cần các tập lệnh Unity dưới dạng bổ sung. Tôi không thể tìm thấy bất kỳ lời giải thích hoặc tài liệu về làm như vậy; Làm cách nào tôi có thể xây dựng trò chơi bằng Unity và sử dụng trình chỉnh sửa trực quan tối thiểu (hoặc không)?


1
Bỏ phiếu để đóng, đây là một đề xuất khung được ngụy trang dưới dạng câu hỏi về Unity.
BlueRaja - Daniel Pflughoeft

2
Tôi thực sự không chắc chắn nếu tôi đồng ý với điều đó, mặc dù tôi sẽ không đảo ngược một cuộc bỏ phiếu chặt chẽ của cộng đồng. Tuy nhiên, tôi sẽ lưu ý rằng câu hỏi này đặc biệt hỏi về một số khả năng của Unity: các câu trả lời không giải quyết được có thể bị xóa. Chúng ta đừng biến câu hỏi này thành một câu hỏi ngoài chủ đề nếu chúng ta không phải vậy, được chứ?
Josh

2
Hầu hết các nhà phát triển tìm kiếm một trình soạn thảo trực quan tại một số điểm để thiết kế cấp độ của họ, bởi vì công cụ định vị trực quan đơn giản hơn nhiều so với việc đặt vị trí của mỗi hình tượng trưng nhỏ trong mã. Tương tự với chỉnh sửa / thiết kế bố trí GUI. Có những thứ này đã được tích hợp sẵn là một lợi ích rất lớn IMHO.
bummzack

4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameđược rồi, về cơ bản có nghĩa là bạn không muốn sử dụng một công cụ trò chơi, bạn muốn lập trình với một thư viện đồ họa. Tuy nhiên, bạn đã gặp phải một trở ngại kỹ thuật khi cố gắng làm điều đó, vì vậy ... tôi cảm thấy có một mâu thuẫn ở đây.
jhocking

3
@jhocking Sau đó, định nghĩa của chúng tôi về công cụ trò chơi dường như rất khác nhau. Thư viện lớp là một công cụ trò chơi nếu nó trừu tượng hóa các tác vụ trò chơi thông thường như toán học máy ảnh, hệ thống âm thanh và thậm chí là một chút vật lý, nhưng một nhà thiết kế không phải là một yêu cầu và theo tôi thậm chí không nên sử dụng .
Ray

Câu trả lời:


27

Tôi là người mới bắt đầu hoàn toàn trong Unity, nhưng đây là cách tôi làm điều đó vào lúc này và nó giảm mức sử dụng trình chỉnh sửa xuống mức tối thiểu:

Trong trình chỉnh sửa, tôi chỉ có ba đối tượng: Một GameObject trống có tên là "chính", máy ảnh và đèn. Và điều này chỉ bởi vì cho đến nay tôi chỉ làm việc với một camera và một ánh sáng duy nhất, vì vậy nó nhanh hơn theo cách này. Sau này tôi có thể sẽ loại bỏ chúng, và chỉ "chính" sẽ vẫn còn.

Trong "Tài sản / MyScripts", tôi có một lớp "Chính", được thêm vào GameObject "chính" dưới dạng một hành vi. Điều đó có nghĩa là khi chương trình bắt đầu, lớp "Chính" được khởi tạo và phương thức của nó được gọi. Lớp "Chính" là như thế này:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

Trong trò chơi, tôi tự động xây dựng môi trường như thế này:

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

Nhưng điều này là do cho đến nay tôi chỉ làm một nguyên mẫu. Sau này tôi sẽ muốn thay thế các hình khối bằng một số thứ hay ho được chỉnh sửa trong Blender. Điều này sẽ yêu cầu tạo chúng trong Blender và nhập chúng vào Đơn vị dưới dạng "prefabs". Sau đó, tôi sẽ khởi tạo tương tự "prefabs" từ mã C #.

Nếu bạn muốn làm cho một đối tượng phản ứng với các sự kiện, chẳng hạn như va chạm với các đối tượng khác, bạn có thể khởi tạo đối tượng và thêm chúng một cách linh hoạt một lớp hành vi, đó là lớp C # có nguồn gốc từ MonoBehavior. Ví dụ: nếu bạn muốn có một chiếc ô tô, bạn tạo một chiếc xe prefab và viết một lớp "CarBehavior" cho hành vi của nó trong trò chơi.

Bằng cách này, bạn có thể giảm mức tương tác với trình chỉnh sửa xuống mức tối thiểu, mặc dù có lẽ không hoàn toàn về không. Bây giờ nó phụ thuộc vào việc đây là một giải pháp chấp nhận được cho bạn.


2
Tôi muốn nói rằng đây có vẻ là một câu trả lời khá rõ ràng và chắc chắn cho người mới bắt đầu Unity :)
Ray

Cảm ơn! Tôi là một lập trình viên có kinh nghiệm, nhưng đây là dự án đầu tiên của tôi trong Unity và còn lâu mới hoàn thành. Tôi chưa sử dụng prefabs. Có thể có một số biến chứng tôi hiện không biết, vì vậy tôi khuyên bạn nên dùng lời khuyên với một hạt muối. Nhân tiện, serialization trong Unity cảm thấy hơi phản trực giác đối với tôi. Tôi sẽ phải nghiên cứu nó sâu hơn, và nó có thể ảnh hưởng đến một số quyết định thiết kế.
Viliam Búr

9

Khi làm việc với Unity, bạn phải thực hiện một số công việc trong trình chỉnh sửa của Unity; đó đơn giản là cách Unity hoạt động.

Tuy nhiên, phần lớn những gì bạn sẽ làm với tư cách là một lập trình viên không xảy ra trong trình soạn thảo của Unity; các tệp tập lệnh là các tệp văn bản bên ngoài được viết trong IDE bên ngoài và với tư cách là một lập trình viên, bạn chỉ sử dụng trình soạn thảo của Unity để liên kết các tập lệnh nào sẽ chạy và sau đó nhấn Play để thực sự chạy trò chơi. Điều đó không giống như liên kết trong các lớp trong cài đặt dự án, rồi nhấn Run trong IDE của bạn.

Hầu hết các công cụ phát triển trò chơi khác có trình chỉnh sửa hình ảnh trung tâm cũng được hỗ trợ với kịch bản hỗ trợ hạn chế và không linh hoạt, nhưng Unity không gặp phải bất lợi đó. Mặc dù mọi thứ được tạo cho Unity cuối cùng đều thông qua trình chỉnh sửa trực quan, giao diện cốt lõi này bao gồm rất nhiều dự án liên kết với mã tùy chỉnh chạy trong công cụ trò chơi của Unity. Các lập trình viên có kinh nghiệm, đừng bỏ qua môi trường phát triển này, nhầm nó với một số người tạo trò chơi nhấp chuột với khả năng lập trình hạn chế!

(ngoài ra, có vẻ như cuốn sách tôi đang viết sẽ là một tài nguyên tuyệt vời cho bạn, vì nó nhắm vào các lập trình viên có kinh nghiệm)


1
đang trong quá trình đọc cuốn sách của bạn thì tôi đã bắt gặp câu trả lời này
tối đa

6

Tôi tin rằng những gì bạn đang tìm kiếm là Khung tương lai cho sự thống nhất.

Về cơ bản, sau đó bạn có thể thực hiện tất cả các chương trình của mình bằng cách sử dụng các tập lệnh mà không phải "kéo và thả" công cụ hoặc gây rối với trình soạn thảo trực quan nhiều. Tất cả những gì bạn cần là một GameObject duy nhất trong Cảnh của bạn, đây sẽ là nơi chứa toàn bộ trò chơi của bạn. Sau đó, bạn làm mọi thứ theo thủ tục như với một trình soạn thảo không trực quan.

Tuyên bố miễn trừ trách nhiệm: Mặc dù Futile rất tập trung vào mã, nhưng không thể tránh khỏi việc bạn phải gây rối với trình soạn thảo Unity trong một số thời trang. Nhưng điều này giảm đi rất nhiều với Futile.


2

Tôi muốn thêm vào tất cả các câu trả lời hay ở đây, đặc biệt là câu trả lời của @jhocking:

Hầu hết mọi thứ tôi tìm thấy trong Unity đều có một bản sao văn bản đơn giản trong cây thư mục dự án. Tôi đã trực tiếp chỉnh sửa prefabs và các gameObject khác mà không cần mở Unity và những thay đổi đó đã được các nhà phát triển khác tìm thấy thành công khi cam kết.

Mặc dù tôi không biết nhiều về Futile Framework cho đến ngày hôm nay, nhưng đây có vẻ là một cách thực sự tuyệt vời để có được mọi thứ.

Tôi hiện đang sử dụng tất cả các công cụ kéo và thả thay vì dựa trên kịch bản, nhưng điều đó sẽ phải thay đổi vì mục tiêu của tôi sẽ có các cấp độ được tạo theo thủ tục và kẻ xấu.

Hai xu của tôi nói về cơ bản có được một vài đối tượng bạn cần trong Unity, sau đó dựa vào các tập lệnh trong trình chỉnh sửa bên ngoài. Bạn có thể làm gần như mọi thứ trong văn bản đơn giản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.