Just 4 fun!

Of course I can change the world, If you give me a source code

Post Ads (Documentation)

Author Info (Documentation)

style="display:block"
data-ad-client="ca-pub-2623284640924516"
data-ad-slot="8347113188"
data-ad-format="auto">

Thursday, June 30, 2016

Tối ưu load scene bằng SSsystem.

Chào các bạn, hè năm ngoái mình có tham gia chương trình Bluebird Award và có quen mấy anh trong team hoppi (team làm game Bucha Adventure) và được chia sẻ về cách sử dụng SSsystem tối ưu việc load scene trong game khá là hay. Hôm nay mình sẽ chia sẻ lại với các bạn.
Đầu tiên, các bạn tải packet SSsystem về tại đây.
Giải nén ra bạn sẽ được thư mục SSSystems, hãy import thư mục này vào các project của bạn. Thông thường, nếu muốn load một scene, chúng ta hay dùng Application.loadlevel() với Unity 5.0 trở về trước và Scenemanager.loadscene với Unity 5.0 trở đi. Tuy nhiên, sau khi import thư mục SSSystems, chúng ta sẽ tạo một script chuyên để load scene như sau:

using UnityEngine;
using System.Collections;
using SS;
using System;

public class load : Controller {

    public override string SceneName()
    {
        return "Scene1";
    }

   public void loadScene(String sceneName)
    {
        SceneManager.Scene(sceneName, false); 
    }

}
//(tham số false tức là các đối tượng của scene này sẽ không bị destroy khi load scene mới).

Chú ý là chúng ta phải khai báo using SS; using System; kế thừa Controller và ghi đè SceneName() . Giờ chỉ cần gọi loadScene() và truyền vào tên scene cần load. Ở những scene khác, ta cần tạo một script tương tự như trên, gắn vào một gameobject và để tất cả những đối tượng khác trong scene là đối tượng con của gameobject đó.

Tạo một script kế thừa Controller và ghi đè return vào SceneName().


Gắn script vừa tạo vào một gameobject chứa tất cả các đối tượng có trong Scene.
Bây giờ, khi chúng ta gọi loadScene() , scene mới sẽ được load kèm theo đó là gameoject có chứa tất cả các đối tượng. Trong khi đó những đối tượng của scene cũ cũng không bị destroy đi mà chỉ bị disable và sẽ được active khi chúng ta gọi lại scene đó. 
Điều này sẽ giảm đáng kể thời gian load scene vì không phải khởi tạo thêm những đối tượng mới trong game nữa. Tất nhiên, nó mới chỉ giảm được phần nào, quan trọng vẫn là ở việc bạn tối ưu các tài nguyên game và cơ chế như thế nào. Chúc thành công và sớm cho ra đời những sản phẩm game tuyệt vời nhất. 
Hãy share nếu thấy bài viết của mình hữu ích!

No comments:

Post a Comment