STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ

    Sử Dụng JsonUtility Trong Lập Trình Game Với Unity

    Hướng dẫn sử dụng đối tượng JsonUtility tổng hợp dữ liệu thành chuỗi JSON và ngược lại trong Unity.
    21/09/2014 28/09/2020 3 phút đọc
    Sử Dụng JsonUtility Trong Lập Trình Game Với Unity

    Giới thiệu

    Trong quá trình làm game với Unity, thường gặp vấn đề với việc lưu trạng thái game (bảng điểm, bảng xếp hạng…) khi thoát game. Giải pháp cho vấn đề này là ghi dữ liệu xuống file, nhưng việc tổng hợp để tạo ra chuỗi dữ liệu để ghi xuống file khá phức tạp, việc lấy dữ liệu từ chuỗi được đọc từ file còn phức tạp hơn. Trong Unity, JsonUtility là đối tượng dùng để thao tác với dữ liệu JSON và đây cũng chính là cách nhiều lập trình viên lựa chọn để lưu lại trạng thái người chơi trong game. Bài viết này sẽ hướng dẫn cách sử dụng JsonUtility trong Unity.

    Tạo chuỗi JSON từ 1 đối tượng

    Đầu tiên, phải chắc chắn rằng đối tượng cần lấy dữ liệu thuộc về kiểu dữ liệu sử dụng Serializer JSON.

    using System;
    
    [Serializable]
    public class Setting{
        public string Language;
        public bool Sound;
        public int Volume;
    }

    Việc đặt [Serializable] trước khai báo lớp để lớp được sử dụng với Serializer JSON.

    Khởi tạo và gán giá trị cho đối tượng:

    GameSetting gameSetting = new GameSetting();
    gameSetting.Language = "en";
    gameSetting.Sound = false;
    gameSetting.Volume = 30;

    Để tạo một chuỗi JSON từ dữ liệu của gameSetting, sử dụng phương thức ToJson của JsonUtility.

    string settingJSON = JsonUtility.ToJson(gameSetting);

    Khi đó giá trị settingJSON sẽ là một chuỗi như sau:

    {"Language":"en","Sound":false,"Volume":30}

    Đây chính là chuỗi JSON cần ghi xuống file để lưu trữ.

    Chuyển dữ liệu từ chuỗi JSON sang đối tượng

    Ở phần này, cũng phải chắc rằng đối tượng cần được gán dữ liệu có kiểu dữ liệu sử dụng Serializer JSON. Sử dụng lại lớp GameSetting trên để làm ví dụ:

    GameSetting loadSetting = JsonUtility.FromJson<GameSetting>(settingJSON);

    Ở đây, phương thức FromJson sẽ khởi tạo một đối tượng có kiểu là GameSetting có giá trị tương ứng với các từ khóa trong chuỗi JSON.

    Trong trường hợp có sẵn một đối tượng và cần cập nhật dữ liệu từ một chuỗi JSON vào đối tượng có sẵn đó, dùng phương thức FromJsonOverwrite.

    JsonUtility.FromJsonOverwrite(jsonString, gameSetting);

    FromJsonOverwrite khá giống với FromJson ngoại trừ việc phương thức này không tạo mới một đối tượng mà chỉ cập nhật lại các giá trị của đối tượng sẵn có tương ứng với mỗi từ khóa trong chuỗi JSON.

    Mã nguồn

    File GameSetting.cs:

    using System;
    using UnityEngine;
     
    [Serializable]
    public class GameSetting{
        public string Language;
        public bool Sound;
        public int Volume;
     
        public static GameSetting CreateFromJSON(string jsonString)
        {
            return JsonUtility.FromJson<GameSetting>(jsonString);
        }
     
        public void LoadFormJSON(string jsonString)
        {
            JsonUtility.FromJsonOverwrite(jsonString, this);
        }
     
        public string SaveToJSON()
        {
            return JsonUtility.ToJson(this);
        }
    }

    File Main.cs:

    using UnityEngine;
     
    public class Main : MonoBehaviour {
     
        
        // Use this for initialization
        void Start () {
            GameSetting gameSetting = new GameSetting();
            gameSetting.Language = "en";
            gameSetting.Sound = false;
            gameSetting.Volume = 30;
            string settingJSON = gameSetting.SaveToJSON();
            print(settingJSON);
     
            GameSetting loadSetting = GameSetting.CreateFromJSON(settingJSON);
     
            gameSetting.LoadFormJSON(settingJSON);
        }
    	
    	// Update is called once per frame
    	void Update () {
    		
    	}
    }

    Lưu ý: Để chạy mã nguồn, phải thêm file Main.cs vào bất kỳ một object trong scene.

    Download

    Có thể download mã nguồn tại đây.

    Tham khảo

    0 Bình luận
    Lập Trình Game

    Lập Trình Game

    Kiến thức, kỹ thuật, kinh nghiệm lập trình game.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021