Sử dụng kết xuất họa tiết để hiển thị nội dung của một cảnh khác dưới dạng họa tiết
Môi trường xác minh
- Windows
-
- cửa sổ 11
- Biên tập viên Unity
-
- 2021.3.3F1
- Gói hệ thống đầu vào
-
- 1.3.0
Điều kiện tiên quyết cho mẹo này
Các cài đặt sau đây đã được thực hiện trước làm tiền đề cho mô tả về mẹo này.
Lúc đầu
Kết xuất kết cấu cho phép bạn viết bản vẽ của mình thành kết cấu thay vì màn hình. Điều này cho phép bạn tự do tạo kết cấu trong quá trình thực hiện trò chơi mà không cần chuẩn bị trước hình ảnh kết cấu.
Bạn cũng có thể ghi vào kết cấu kết xuất thay đổi động mọi khung hình, ví dụ, để chiếu một hình ảnh khác từ camera chính trên màn hình tồn tại trong trò chơi.
Chuẩn bị hình ảnh
Khi sử dụng kết cấu kết xuất, bạn không cần chuẩn bị hình ảnh mà có thể chuẩn bị nó làm mẫu để làm cho kết quả vẽ dễ hiểu hơn.
Tạo kết cấu kết xuất
Tạo một tài sản từ dự án. Từ Create, chọn Render Texture.
Tên có thể tùy ý. Vì tên không được chỉ định trực tiếp từ bên NewRenderTexture
ngoài tại thời điểm này, hãy để là .
Chọn kết cấu kết xuất và chỉ định kích thước của nó từ Trình kiểm tra. Vì kết cấu kết xuất là một vùng vẽ, bạn phải chỉ định kích thước. Lần này, tôi muốn viết một cảnh được tạo riêng, do đó tôi cài đặt tỷ lệ khung hình thành 16: 9.
Đặt đích kết xuất kết cấu
Chọn "UI" > "Raw Image" từ hệ thống phân cấp của cảnh được tạo ban đầu. Hiển thị nội dung của kết cấu kết xuất trong đối tượng này. Nó là một đối tượng của giao diện người dùng, nhưng những gì bạn cần là một thành phần "Hình ảnh thô", có thể được đặt thành một đối tượng khác.
RawImage đã được đặt. Bởi vì nó là một đối tượng UI, nó được đặt trong một Canvas. Tôi chưa đặt bất cứ thứ gì, vì vậy tôi chỉ nhận được một hình chữ nhật màu trắng.
Chúng tôi muốn tỷ lệ bằng nhau, vì vậy chúng tôi đặt kích thước của đối tượng RawImage giống như kết cấu kết xuất. Nếu bạn giữ nguyên tỷ lệ khung hình, kết quả vẽ sẽ chỉ được chia tỷ lệ ngay cả khi bạn thay đổi kích thước, nhưng nếu bạn thay đổi tỷ lệ khung hình, kết quả vẽ sẽ bị nghiền nát theo chiều dọc hoặc chiều ngang.
Thành phần Raw Image của đối tượng RawImage có "texture", vì vậy hãy đặt texture render mà bạn vừa tạo ở đó. Nội dung của kết cấu kết xuất vẫn trống, vì vậy chúng trong suốt trong chế độ xem.
Tạo cảnh kết xuất nội dung vẽ kết cấu
Tiếp theo, tạo một cảnh mới để tạo nội dung sẽ được vẽ trong kết cấu kết xuất. Chọn File từ menu và chọn New Scene.
Vì mẫu này là 2D, bạn cũng sẽ chọn cảnh 2D.
Tạo nó trong thư mục Cảnh. SampleSceneTexture
Để tên là .
Sau khi tạo cảnh, hãy đặt các đồ vật một cách thích hợp. Tất cả những gì bạn phải làm là đảm bảo rằng bạn biết nội dung của kết cấu kết xuất. Để xác nhận rằng bất cứ thứ gì nhô ra bên ngoài máy ảnh đều không được vẽ, một sprite cũng được đặt gần khung máy ảnh.
Nếu các đối tượng chồng lên nhau, bối cảnh của các đối tượng sẽ không xác định, vì vậy nếu bạn có nền, hãy hạ thấp thứ tự của các lớp nền.
Sau khi chọn "MainCamera", hãy đặt kết cấu kết xuất trong "Kết cấu mục tiêu". Điều này làm cho bản vẽ được vẽ trong kết cấu kết xuất.
Xóa thành phần Audio Listener được đặt thành MainCamera. Tất cả những gì bạn cần cho một kết cấu kết xuất là vẽ, vì vậy bạn không cần Audio Listener. Một cảnh báo sẽ được hiển thị nếu có nhiều "Người nghe âm thanh" trong thời gian chạy.
Nhân tiện, nếu bạn chạy cảnh cho kết cấu kết xuất ở trạng thái này, sẽ không có gì được hiển thị trên màn hình. Điều này là do bạn đang vẽ trên một kết cấu kết xuất. Nếu bạn muốn kiểm tra nó trên màn hình, hãy xóa "kết cấu đích" và sau đó thực hiện nó.
Cài đặt lớp
Trong mẫu này, bạn sẽ phải di chuyển hai cảnh cùng một lúc, nhưng nếu bạn di chuyển chúng như hiện tại, nội dung được vẽ trong kết cấu kết xuất cũng sẽ được hiển thị trên màn hình chính, vì vậy các lớp sẽ không được vẽ riêng.
Đầu tiên, chọn "Chỉnh sửa lớp" từ lớp ở góc trên bên phải của trình chỉnh sửa.
Tên và vị trí là tùy ý, nhưng ở đây chúng ta sẽ thêm một lớp mới RenderTarget
có tên .
Sau khi thêm lớp, hãy mở cảnh cho kết cấu kết xuất, chọn tất cả các đối tượng bạn muốn vẽ và thay đổi giá trị lớp thành giá trị bạn vừa tạo RenderTarget
.
SampleSceneTexture
Điều này sẽ kết thúc việc chỉnh sửa cảnh, vì vậy hãy lưu nó.
Hiển thị kết cấu kết xuất
SampleScene
Khi bạn đã mở một cảnh, hãy thêm nó vào hệ thống SampleSceneTexture
phân cấp bằng cách kéo và thả cảnh.
Sau đó, nên có hai cảnh trong hệ thống phân cấp và nội dung của cảnh sẽ được hiển thị trên SampleSceneTexture
màn hình.
SampleSceneTexture
Nội dung của cảnh đáng lo ngại, vì vậy hãy nhấp vào biểu tượng con mắt của cảnh từ hệ SampleSceneTexture
thống phân cấp.
SampleSceneTexture
Điều này sẽ ẩn các đối tượng trong cảnh và chỉ có nội dung của cảnh sẽ SampleScene
được hiển thị.
Nhân tiện, vì tất cả các cài đặt kết cấu kết xuất đã được hoàn thành,SampleScene
nội dung của kết cấu kết xuất sẽ được hiển thị trong hình ảnh thô được đặt trong cảnh.
Tuy nhiên, biểu tượng ẩn bằng mắt chỉ là một cài đặt để làm cho nó vô hình trên trình chỉnh sửa, vì vậy nếu bạn chạy SampleSceneTexture
trò chơi như hiện tại, nội dung của cảnh cũng sẽ được hiển thị trên màn hình.
SampleScene
Sau đó chọn Scene Main Camera
và bỏ chọn From RenderTarget
Culling Mask trong Camera
Inspector.
Điều này ngăn các đối tượng trong lớp được hiển thị khi RenderTarget
trò chơi chạy.
Hãy thử chạy trò chơi. Nó sẽ xuất hiện như dự định.
Thử di chuyển kết cấu kết xuất
Tuy nhiên, ở trạng thái này, rất khó để biết liệu nó có thực sự hoạt động như một kết cấu kết xuất hay chỉ đơn giản là hiển thị hình ảnh dưới dạng cắt, vì vậy hãy di chuyển nó.
Nội dung có thể là bất cứ thứ gì, nhưng ở đây chúng tôi sẽ đặt chuyển động để tự động xoay sprite. Tạo một SelfRotate
tập lệnh và tạo nó dưới dạng .
Ở đây, chúng tôi sẽ bao gồm một quá trình đơn giản để tự xoay từng chút một.
using UnityEngine;
public class SelfRotate : MonoBehaviour
{
// 更新はフレームごとに 1 回呼び出されます
void Update()
{
transform.Rotate(0, 0, 0.1f);
}
}
Sau khi tạo tập lệnh, hãy đính kèm ngày càng nhiều vào đối tượng bạn muốn xoay.
Sau đó chạy trò chơi và xem nó có quay không. Tôi nghĩ bạn có thể thấy rằng đối tượng đang di chuyển trong kết cấu kết xuất.
Cách di chuyển nhiều cảnh cùng một lúc
Ở đây, chúng tôi đã tạo ra một ví dụ đơn giản để chúng tôi có hai cảnh chạy từ đầu, nhưng trong một trò chơi thực tế, có nhiều trường hợp bạn phải bắt đầu với một cảnh duy nhất. Trong trường hợp đó, tôi nghĩ rằng bạn sẽ phải tự động thêm các cảnh ở đầu cảnh để làm cho nó có nhiều cảnh.
Vui lòng tham khảo "Thêm cảnh" để biết giải thích về cách thêm cảnh.
Về cơ bản, SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive);
gọi điện nên giải quyết hầu hết các vấn đề.
Cách ngăn nội dung của kết cấu kết xuất xuất hiện trên màn hình chính mà không cần sử dụng các lớp
Nội dung của kết cấu kết xuất được hiển thị trên màn hình chính vì cảnh chính và cảnh kết cấu kết xuất nằm ở cùng một nơi. Do đó, nếu bạn di chuyển nội dung của kết cấu kết xuất đến một nơi không bao giờ được hiển thị trong cảnh chính, nó sẽ không được hiển thị trên màn hình chính. Ví dụ: bạn có thể di chuyển đối tượng kết xuất kết cấu hoặc máy ảnh đến vị trí (-10000, -10000). Bằng cách này, cài đặt lớp là không cần thiết.
Khi bạn muốn hoàn thành nội dung của kết cấu kết xuất trong một cảnh mà không chia nó thành các cảnh khác nhau
Điều này được thực hiện bằng cách sử dụng kỹ thuật tương tự như phương pháp trước đó mà không có lớp. Bạn có thể di chuyển nội dung được hiển thị bởi kết cấu kết xuất đến một nơi mà nó sẽ không bao giờ được hiển thị trên camera chính. Sự khác biệt so với phương pháp tách cảnh là bạn cần đặt hai camera, nhưng ngoài ra, về cơ bản bạn sẽ có các cài đặt giống như phương pháp tách cảnh.
Nếu bạn muốn chụp nội dung được chụp từ một góc nhìn khác trong trò chơi 3D dưới dạng kết cấu kết xuất
Mẹo này không nói nhiều về 3D vì nó tập trung vào 2D, nhưng cách tiếp cận về cơ bản là giống nhau. Vì bạn đang chiếu một không gian 3D duy nhất từ nhiều góc độ, bạn không cần phải có nhiều hơn hai cảnh. Tất cả những gì bạn phải làm là đặt bao nhiêu camera tùy thích, đặt đích vẽ làm kết cấu kết xuất và đặt vị trí hiển thị kết cấu kết xuất.