Exemplo n.º 1
0
    //When "OK", the setting completion callback handler
    //http://fantom1x.blog130.fc2.com/blog-entry-282.html#fantomPlugin_CustomDialog_result
    private void OnReceiveResult(string message)
    {
        //(*) Activate the "DebugConsole" in the hierarchy to see its parameters.
        XDebug.Clear();
        XDebug.Log("(OnReceiveResult message)");
        XDebug.Log(message, 3);

        if (!string.IsNullOrEmpty(message))
        {
            Dictionary <string, int> vols = volumeController.GetVolumes(); //For save volume

            if (toggleJson != null && toggleJson.isOn)                     //JSON format
            {
                Data data = JsonUtility.FromJson <Data>(message);
                XDebug.Log("(Parse to Data [from JSON])");
                XDebug.Log(data, 3);

                if (data.reset)  //Execute setting reset
                {
                    PlayerPrefs.DeleteKey(gameObject.name + JSON_PREF);
                    volumeController.ResetVolumes();     //Return to initial state

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast("The setting was Reset");
#endif
                }
                else  //Update and save values
                {
                    //Update volume setting (*) if used Slider change callback "PreviewVolume()", it is applied in real-time, so it is not necessary.
                    vols["master"] = data.master;
                    vols["bgm"]    = data.bgm;
                    vols["voice"]  = data.voice;
                    vols["se"]     = data.se;

                    //Save parameters (PlayerPrefs)
                    XPlayerPrefs.SetObject(gameObject.name + JSON_PREF, data);
                    volumeController.SetPrefs(vols);
                    PlayerPrefs.Save();

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast(message);
#endif
                }
            }
            else  //"key=value" format
            {
                Param pref = Param.Parse(message);
                XDebug.Log("(Parse to Param [from key=value])");
                XDebug.Log(pref, 3);

                if (pref["reset"].ToLower() == "true")  //Execute setting reset
                {
                    PlayerPrefs.DeleteKey(gameObject.name);
                    volumeController.ResetVolumes();     //Return to initial state

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast("The setting was Reset");
#endif
                }
                else  //Update and save values
                {
                    //Update volume setting (*) if used Slider change callback "PreviewVolume()", it is applied in real-time, so it is not necessary.
                    foreach (var key in vols.Keys.ToArray())
                    {
                        vols[key] = int.Parse(pref[key]);
                        pref.Remove(key);   //Remove unnecessary parameters for saving
                    }
                    pref.Remove("reset");   //Remove unnecessary parameters for saving

                    //Save parameters (PlayerPrefs)
                    if (pref.Count > 0)
                    {
                        Param.SetPlayerPrefs(gameObject.name, pref);
                    }
                    volumeController.SetPrefs(vols);
                    PlayerPrefs.Save();

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast(message);
#endif
                }
            }
        }
    }
Exemplo n.º 2
0
    //設定完了(「OK」時)のコールバックハンドラ
    private void OnReceiveResult(string message)
    {
        XDebug.Clear(); //※ヒエラルキーにある「DebugConsole」をオンにすると内容が見れます。
        XDebug.Log("(OnReceiveResult message)");
        XDebug.Log(message, 3);

        if (!string.IsNullOrEmpty(message))
        {
            Dictionary <string, int> vols = volumeController.GetVolumes(); //音量の保存用

            if (toggleJson != null && toggleJson.isOn)                     //JSON 形式
            {
                Data data = JsonUtility.FromJson <Data>(message);
                XDebug.Log("(Parse to Data [from JSON])");
                XDebug.Log(data, 3);

                if (data.reset)  //設定のリセットを実行
                {
                    PlayerPrefs.DeleteKey(gameObject.name + JSON_PREF);
                    volumeController.ResetVolumes();     //初期状態に戻す

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast("設定がリセットされました");
#endif
                }
                else  //値の更新と保存
                {
                    //音量設定の更新(※スライダーの変化コールバック:PreviewVolume() をしている場合は、リアルタイムで反映されているので無くても可)。
                    vols["master"] = data.master;
                    vols["bgm"]    = data.bgm;
                    vols["voice"]  = data.voice;
                    vols["se"]     = data.se;

                    //PlayerPrefs の更新
                    XPlayerPrefs.SetObject(gameObject.name + JSON_PREF, data);
                    volumeController.SetPrefs(vols);
                    PlayerPrefs.Save();

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast(message);
#endif
                }
            }
            else  //キーと値ペアの形式
            {
                Param pref = Param.Parse(message);
                XDebug.Log("(Parse to Param [from key=value])");
                XDebug.Log(pref, 3);

                if (pref["reset"].ToLower() == "true")  //設定のリセットを実行(※値は文字列)
                {
                    PlayerPrefs.DeleteKey(gameObject.name);
                    volumeController.ResetVolumes();     //初期状態に戻す

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast("設定がリセットされました");
#endif
                }
                else  //値の更新と保存
                {
                    //音量設定の更新(※スライダーの変化コールバック:PreviewVolume() をしている場合は、リアルタイムで反映されているので無くても可)。
                    foreach (var key in vols.Keys.ToArray())
                    {
                        vols[key] = int.Parse(pref[key]);
                        pref.Remove(key);   //保存に不要なパラメタを削除
                    }
                    pref.Remove("reset");   //保存に不要なパラメタを削除

                    //PlayerPrefs の更新
                    if (pref.Count > 0)
                    {
                        Param.SetPlayerPrefs(gameObject.name, pref);
                    }
                    volumeController.SetPrefs(vols);
                    PlayerPrefs.Save();

#if UNITY_ANDROID && !UNITY_EDITOR
                    AndroidPlugin.ShowToast(message);
#endif
                }
            }
        }
    }