Bản vẽ Unity 5 2D lập trình


8

Làm cách nào tôi có thể vẽ các họa tiết trong Unity 5 theo chương trình? Tôi đang tìm kiếm một cái gì đó tương tự như spriteBatch.Draw()trong XNA. Các kết quả tôi nhận được khi tôi tìm kiếm về nó đã lỗi thời http://wiki.unity3d.com/index.php?title=SpriteManager (điều này đã được viết vào năm 2012) hoặc chúng được thực hiện bằng giao diện thống nhất. Tất cả những gì tôi có thể tìm thấy là một Spritelớp trong UnityEngine.dll. Đây có phải là những gì tôi cần? Bản vẽ sẽ hoạt động như thế nào? Tôi thực sự không nhận được nó.


Bạn có ý nghĩa gì bằng cách vẽ các họa tiết? Bạn có nghĩa là hiển thị chúng ra màn hình hoặc tự động tạo hình ảnh được đại diện bởi sprite?
MichaelHouse

@ Byte56 hiển thị hình ảnh 2D trên màn hình, giống như mọi công cụ trò chơi 2D tôi đã thấy. Tôi không biết tại sao điều này dường như rất khó tìm thấy khi bạn tìm kiếm trong google. Tôi cần một cái gì đó như spriteBatch.Draw (SpriteSheetName, vị trí, Hình chữ nhật, nguồn gốc, tỷ lệ, xoay) trong đó hình chữ nhật đang xác định một phần của bảng sprite tôi đang cố vẽ. Bây giờ tôi đang cố gắng thực hiện điều này bằng cách tạo một Spritevà sau đó SpriteRenderernhưng tôi không thể tìm ra cách đặt hình ảnh thành sprite.
dimitris93

Các Spriteđối tượng @ Byte56 dường như thậm chí không có thuộc tính để đặt hình ảnh. thứ gần nhất tôi thấy là sprite.texture chỉ được đọc ... thực ra mọi thuộc tính của sprite chỉ được đọc
dimitris93

Câu trả lời:


16

Unity không có loại kết xuất "chế độ trực tiếp" này, bạn sẽ không gọi Drawbất kỳ vòng cập nhật nào cho Unity.

Trong Unity bạn cần tạo một đối tượng trò chơi, sau đó đính kèm tập lệnh vào đối tượng trò chơi đó. Các tập lệnh này sẽ kiểm soát cách đối tượng hoạt động, nếu và cách nó hiển thị trên màn hình, nếu đó là một phần của hệ thống vật lý, v.v.

Để tạo một sprite mới để vẽ trên màn hình, bạn cần tạo một đối tượng trò chơi mới, sau đó đính kèm tập lệnh SpriteRenderer vào nó và đặt sprite của nó.

GameObject go = new GameObject();
SpriteRenderer renderer = go.AddComponent<SpriteRenderer>();

renderer.sprite = Resources.Load("Sprites/Player", typeof(Sprite)) as Sprite;

Điều này giả định một cấu trúc thư mục của

-Assets
--Resources
---Sprites
----<Your 2D assets, set with their texture type to Sprite (2D and UI)>

Ví dụ:

nhập mô tả hình ảnh ở đây

Sau đó, bạn đã có một tập lệnh khác để thay đổi vị trí, xoay, v.v., tùy thuộc vào cách bạn muốn nó hoạt động.

Cách dễ nhất để thực hiện tất cả điều này mà không phải viết nhiều mã? Tạo đối tượng trò chơi trong trình soạn thảo Unity trước. Một khi đối tượng trò chơi được trang bị sprite bạn muốn và các kịch bản hành vi và tất cả những thứ đó. Kéo và thả nó vào một thư mục tài nguyên. Điều này tạo ra một prefab. Prefabs chỉ là những gì họ nghe, chế tạo trước. Chúng là những vật thể hoàn chỉnh mà sau đó bạn có thể tham khảo và tạo ra một cách nhanh chóng.

Bạn sẽ tạo những thứ như:

public void CreateObject(string prefabName) {
   GameObject newObject = 
      GameObject.Instantiate(Resources.Load(prefabName)) as GameObject;
}

Điều này sẽ sinh ra một bản sao của prefab bạn đã tạo trước đó. Vì vậy, nếu chẳng hạn, bạn đã cho prefab của mình hành vi di chuyển về phía người chơi và tấn công, mỗi khi bạn sinh ra một prefab mới thuộc loại đó, chúng sẽ bắt đầu tiến về phía người chơi và tấn công. Các kịch bản bạn chỉ phải viết một lần kiểm soát tất cả các đối tượng trò chơi đó.

Tôi nghĩ rằng sự khác biệt chính mà bạn thấy ở đây là việc sử dụng nhiều linh kiện. Điều mà bạn có thể chưa thấy trong các công cụ trò chơi khác như XNA. Unity thực sự là một công cụ mạnh mẽ, nhưng sự thất vọng của bạn đến từ việc cố gắng sử dụng nó như các công cụ khác, khi nó không giống như các công cụ khác. Kiểm tra hồ sơ của tôi để được đào tạo, tôi đã thêm một liên kết để dùng thử miễn phí để bạn không phải trả tiền.


ồ kiến thức về sự thống nhất của tôi chỉ tăng thêm một tấn :) điều này thực sự rất có ý nghĩa. tôi chưa bao giờ nghe nói về prefabs trước đây. cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn :)
dimitris93

Ngoài ra tôi mới bắt đầu xem hướng dẫn của bạn: D
dimitris93

@Shiro Bạn có thể muốn duyệt qua những cái cơ bản trước, để củng cố sự hiểu biết của bạn về các đối tượng, thành phần, prefab, v.v. Ngoài ra, đừng bận tâm đến chương GUI của khóa học của tôi :( nó đã lỗi thời.
MichaelHouse

1
Âm thanh như một câu hỏi mới cho trang web, không phải là ý kiến.
MichaelHouse

1
Câu trả lời này nên được in trên trang đầu tiên của tài liệu Unity.
Easwee
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.