//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 } } } }
//設定完了(「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 } } } }