Chuyển Scene siêu nhanh trong Editor Unity
Khi thực hiện các tác vụ trên Editor của Unity, phím tắt là thứ giúp chúng ta tiết kiệm được rất nhiều thời gian. Chuyển scene cũng vậy. À mà khoan! hình như Unity không có phím tắt để chuyển scene. Đúng vậy, nhưng đó cũng là lý do có bài viết này.
Editor Scripting
Vì đây là bài viết đầu về Editor Scripting nên mình sẽ giới thiệu qua về nó một chút. Về cơ bản Editor Scripting cho phép bạn dễ dàng chỉnh sửa, mở rộng Unity Editor để dễ dàng hơn khi làm việc trong các dự án.
Thật vậy, với Editor Scripting bạn sẽ dễ dàng tạo thêm những cửa sổ mới, mở rộng phần công cụ, xây dựng lên những công cụ phục vụ cho dự án,…
Chuyển Scene cực nhanh
Làm việc qua lại giữa các scene có vẻ là một điều quá bình thường với các dự án từ nhỏ cho đến lớn. Tuy vậy nếu dùng chuột chọn scene theo các truyền thống e rằng sẽ tốn kha kha thời gian thao tác của các bạn.
Ngay bây giờ, mình có trong tay ba scene như trên hình:
Đầu tiên và bắt buộc, là add các scene đó vào Scenes In Build tại Build Setting.
Sau đó mình sẽ tạo một script MonoBehaviour là CustomEditor. Script này không cần add vào GameObject nào cả. Mình cũng sẽ viết luôn hàm OpenScene tại script đó luôn.
public class CustomEditor : MonoBehaviour
{
public static void OpenScene(string sceneName)
{
if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
{
EditorSceneManager.OpenScene("Assets/Scenes/" + sceneName + ".unity");
}
}
}
Để mở scene ở Editor bằng script bạn không chỉ cần tên của scene đó mà còn cần cả đường dẫn của nó nữa.
Trong Editor Scripting, một attribute giúp các bạn thêm các công cụ của mình vào phần Menu đó là MenuItem.
Công việc của mình bây giờ là thêm phần chuyển scene vào Menu và gán cho nó một phím tắt.
public class CustomEditor : MonoBehaviour
{
// Kí tự & là biểu tượng cho phím Alt
[MenuItem("Open Scene/Load &1")]
public static void OpenSceneRoot()
{
OpenScene("Load");
}
[MenuItem("Open Scene/Menu &2")]
public static void OpenSceneMenu()
{
OpenScene("Menu");
}
[MenuItem("Open Scene/GamePlay &3")]
public static void OpenSceneGamePlay()
{
OpenScene("GamePlay");
}
public static void OpenScene(string sceneName)
{
if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
{
EditorSceneManager.OpenScene("Assets/Scenes/" + sceneName + ".unity");
}
}
}
Sau khi save script lại phần Menu sẽ tự động thêm phần Open Scene mình vừa viết ở đó vào.
Mình đã có lựa chọn Open Scene kèm phím tắt trên thanh Menu. Giờ việc mở hay chuyển giữa các scene sẽ thuận tiện và nhanh chóng hơn.
Chúc các bạn thành công.