public static void LoadBinaryData <T>(string p_fileName, LoadBinaryDataCallback <T> p_callback) where T : class
        {
            T      result   = null;
            string filePath = Application.persistentDataPath + p_fileName;

            try
            {
                if (File.Exists(filePath))
                {
                    BinaryFormatter binaryFormatter = new BinaryFormatter();

                    FileStream fileStream = File.OpenRead(filePath);

                    if (fileStream.CanRead)
                    {
                        result = (T)binaryFormatter.Deserialize(fileStream);
                    }
                }
            }
            catch (Exception exception)
            {
                Ch3Logger.DebugLogError(exception.Message);
            }

            p_callback(result != null, result);
        }
        public static void PersistBinaryData <T>(T p_data, string p_fileName, PersistBinaryDataCallback p_callback) where T : class
        {
            bool   success  = false;
            string filePath = Application.persistentDataPath + p_fileName;

            try
            {
                FileStream fileStream = File.OpenWrite(filePath);

                if (fileStream.CanWrite)
                {
                    BinaryFormatter binaryFormatter = new BinaryFormatter();

                    binaryFormatter.Serialize(fileStream, p_data);

                    if (Application.platform == RuntimePlatform.WebGLPlayer)
                    {
                        SyncFiles();
                    }

                    success = true;
                }

                fileStream.Close();
            }
            catch (Exception exception)
            {
                Ch3Logger.DebugLogError(exception.Message);
            }

            p_callback(success);
        }