const string JSON_PREF = "_json"; //For save JSON parameters //Call Android Custom Dialog //http://fantom1x.blog130.fc2.com/blog-entry-282.html#fantomPlugin_CustomDialogItems public void OpenDialog() { if (toggleJson != null && toggleJson.isOn) //JSON format { #if UNITY_ANDROID Data data = new Data(); XPlayerPrefs.GetObjectOverwrite(gameObject.name + JSON_PREF, ref data); //Default value when there is no saved data. //(*) Activate the "DebugConsole" in the hierarchy to see its parameters. XDebug.Clear(); XDebug.Log("(PlayerPrefs or init)"); XDebug.Log(data, 3); DivisorItem divisorItem = new DivisorItem(1); TextItem textItem = new TextItem("You can make various settings."); TextItem textItem1 = new TextItem("Switch the Party Character"); SwitchItem switchItem = new SwitchItem("UnityChan", "utc", data.utc); SwitchItem switchItem2 = new SwitchItem("PronamaChan", "pronama", data.pronama); SwitchItem switchItem3 = new SwitchItem("QueryChan", "query", data.query); TextItem textItem2 = new TextItem("Select a Servant"); ToggleItem toggleItem = new ToggleItem( new String[] { "Saber", "Rancer", "Caster" }, "servant", new String[] { "saber", "rancer", "caster" }, data.servant); TextItem textItem3 = new TextItem("Sound Setting"); Dictionary <string, int> vols; if (volumeController != null) { vols = volumeController.GetVolumes(); } else { vols = new Dictionary <string, int>() { { "master", 100 }, { "bgm", 50 }, { "voice", 50 }, { "se", 50 } } }; SliderItem sliderItem = new SliderItem("Master", "master", vols["master"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem1 = new SliderItem("Music", "bgm", vols["bgm"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem2 = new SliderItem("Voice", "voice", vols["voice"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem3 = new SliderItem("Effect", "se", vols["se"], 0, 100, 0, 0, "PreviewVolume"); TextItem textItem4 = new TextItem("All saved settings will be deleted when Reset.", Color.red); SwitchItem switchItem4 = new SwitchItem("Reset Setting", "reset", false, Color.blue); DialogItem[] items = new DialogItem[] { textItem, divisorItem, textItem1, switchItem, switchItem2, switchItem3, divisorItem, textItem2, toggleItem, divisorItem, textItem3, sliderItem, sliderItem1, sliderItem2, sliderItem3, divisorItem, switchItem4, textItem4, divisorItem, }; #endif #if UNITY_ANDROID && !UNITY_EDITOR AndroidPlugin.ShowCustomDialog("This is Custom Dialog Demo", "", items, gameObject.name, "OnReceiveResult", true, "Apply", "Cancel"); #endif } else //"key=value" format { #if UNITY_ANDROID //'Param' class is basically the same as Dictionary prepared for easy handling of value type conversion and default value. Param pref = Param.GetPlayerPrefs(gameObject.name, new Param()); //When there is no saved data, it is newly generated (elements are empty). //(*) Activate the "DebugConsole" in the hierarchy to see its parameters. XDebug.Clear(); XDebug.Log("(PlayerPrefs or init)"); XDebug.Log(pref, 3); DivisorItem divisorItem = new DivisorItem(1); TextItem textItem = new TextItem("You can make various settings."); TextItem textItem1 = new TextItem("Switch the Party Character", AndroidColor.WHITE, XColor.ToIntARGB("#ff1493"), "center"); //(*) All color formats are the same (only trying on various tests) SwitchItem switchItem = new SwitchItem("UnityChan", "utc", pref.GetBool("utc", false)); SwitchItem switchItem2 = new SwitchItem("PronamaChan", "pronama", pref.GetBool("pronama", false)); SwitchItem switchItem3 = new SwitchItem("QueryChan", "query", pref.GetBool("query", false)); TextItem textItem2 = new TextItem("Select a Servant", XColor.ToColor("#fff"), XColor.ToColor("0x1e90ff"), "center"); //(*) All color formats are the same (only trying on various tests) ToggleItem toggleItem = new ToggleItem( new String[] { "Saber", "Rancer", "Caster" }, "servant", new String[] { "saber", "rancer", "caster" }, pref.GetString("servant", "saber")); TextItem textItem3 = new TextItem("Sound Setting", XColor.ToIntARGB(Color.white), XColor.ToIntARGB(0x3c, 0xb3, 0x71), "center");//"#3cb371" (*) All color formats are the same (only trying on various tests) Dictionary <string, int> vols; if (volumeController != null) { vols = volumeController.GetVolumes(); } else { vols = new Dictionary <string, int>() { { "master", 100 }, { "bgm", 50 }, { "voice", 50 }, { "se", 50 } } }; SliderItem sliderItem = new SliderItem("Master", "master", vols["master"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem1 = new SliderItem("Music", "bgm", vols["bgm"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem2 = new SliderItem("Voice", "voice", vols["voice"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem3 = new SliderItem("Effect", "se", vols["se"], 0, 100, 0, 0, "PreviewVolume"); TextItem textItem4 = new TextItem("All saved settings will be deleted when Reset.", Color.red); SwitchItem switchItem4 = new SwitchItem("Reset Setting", "reset", false, Color.blue); DialogItem[] items = new DialogItem[] { textItem, divisorItem, textItem1, switchItem, switchItem2, switchItem3, divisorItem, textItem2, toggleItem, divisorItem, textItem3, sliderItem, sliderItem1, sliderItem2, sliderItem3, divisorItem, switchItem4, textItem4, divisorItem, }; #endif #if UNITY_ANDROID && !UNITY_EDITOR AndroidPlugin.ShowCustomDialog("This is Custom Dialog Demo", "", items, gameObject.name, "OnReceiveResult", false, "Apply", "Cancel"); #endif } }
const string JSON_PREF = "_json"; //JSON とは保存データを分ける public void OpenDialog() { if (toggleJson != null && toggleJson.isOn) //JSON 形式 { #if UNITY_ANDROID Data data = new Data(); XPlayerPrefs.GetObjectOverwrite(gameObject.name + JSON_PREF, ref data); //保存されたデータがないときはデフォ値となる XDebug.Clear(); //※ヒエラルキーにある「DebugConsole」をオンにすると内容が見れます。 XDebug.Log("(PlayerPrefs or init)"); XDebug.Log(data, 3); DivisorItem divisorItem = new DivisorItem(1); TextItem textItem = new TextItem("あんなことやこんなことを設定できます。"); TextItem textItem1 = new TextItem("嫁のブレンド・S"); SwitchItem switchItem = new SwitchItem("ユニティちゃん", "utc", data.utc); SwitchItem switchItem2 = new SwitchItem("プロ生ちゃん", "pronama", data.pronama); SwitchItem switchItem3 = new SwitchItem("クエリちゃん", "query", data.query); TextItem textItem2 = new TextItem("あなたの属性"); ToggleItem toggleItem = new ToggleItem( new String[] { "ツンデレ", "ヤンデレ", "しょびっち" }, "zokusei", new String[] { "tsundere", "yandere", "syobicchi" }, data.zokusei); TextItem textItem3 = new TextItem("サウンド設定"); Dictionary <string, int> vols; if (volumeController != null) { vols = volumeController.GetVolumes(); } else { vols = new Dictionary <string, int>() { { "master", 100 }, { "bgm", 50 }, { "voice", 50 }, { "se", 50 } } }; SliderItem sliderItem = new SliderItem("マスター", "master", vols["master"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem1 = new SliderItem("音楽", "bgm", vols["bgm"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem2 = new SliderItem("ボイス", "voice", vols["voice"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem3 = new SliderItem("効果音", "se", vols["se"], 0, 100, 0, 0, "PreviewVolume"); TextItem textItem4 = new TextItem("リセットすると保存された設定が全て消去されます", Color.red); SwitchItem switchItem4 = new SwitchItem("設定のリセット", "reset", false, Color.blue); DialogItem[] items = new DialogItem[] { textItem, divisorItem, textItem1, switchItem, switchItem2, switchItem3, divisorItem, textItem2, toggleItem, divisorItem, textItem3, sliderItem, sliderItem1, sliderItem2, sliderItem3, divisorItem, switchItem4, textItem4, divisorItem, }; #endif #if UNITY_ANDROID && !UNITY_EDITOR AndroidPlugin.ShowCustomDialog("設定いろいろ", "", items, gameObject.name, "OnReceiveResult", true, "決定", "キャンセル"); #endif } else //キーと値ペアの形式 { #if UNITY_ANDROID //Param は基本的に Dictionary と同じもので、値の型変換とデフォルト値を簡単に扱うために用意したラッパー的なクラスと考えて良い Param pref = Param.GetPlayerPrefs(gameObject.name, new Param()); //保存されたデータがないときは新規に生成(中身は空) XDebug.Clear(); //※ヒエラルキーにある「DebugConsole」をオンにすると内容が見れます。 XDebug.Log("(PlayerPrefs or init)"); XDebug.Log(pref, 3); DivisorItem divisorItem = new DivisorItem(1); TextItem textItem = new TextItem("あんなことやこんなことを設定できます。"); TextItem textItem1 = new TextItem("嫁のブレンド・S", AndroidColor.WHITE, XColor.ToIntARGB("#ff1493"), "center"); //※色の形式はどれでも同じです(テストで色々試してるだけ) SwitchItem switchItem = new SwitchItem("ユニティちゃん", "utc", pref.GetBool("utc", false)); SwitchItem switchItem2 = new SwitchItem("プロ生ちゃん", "pronama", pref.GetBool("pronama", false)); SwitchItem switchItem3 = new SwitchItem("クエリちゃん", "query", pref.GetBool("query", false)); TextItem textItem2 = new TextItem("あなたの属性", XColor.ToColor("#fff"), XColor.ToColor("0x1e90ff"), "center"); //※色の形式はどれでも同じです(テストで色々試してるだけ) ToggleItem toggleItem = new ToggleItem( new String[] { "ツンデレ", "ヤンデレ", "しょびっち" }, "zokusei", new String[] { "tsundere", "yandere", "syobicchi" }, pref.GetString("zokusei", "tsundere")); TextItem textItem3 = new TextItem("サウンド設定", XColor.ToIntARGB(Color.white), XColor.ToIntARGB(0x3c, 0xb3, 0x71), "center");//"#3cb371" ※色の形式はどれでも同じです(テストで色々試してるだけ) Dictionary <string, int> vols; if (volumeController != null) { vols = volumeController.GetVolumes(); } else { vols = new Dictionary <string, int>() { { "master", 100 }, { "bgm", 50 }, { "voice", 50 }, { "se", 50 } } }; SliderItem sliderItem = new SliderItem("マスター", "master", vols["master"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem1 = new SliderItem("音楽", "bgm", vols["bgm"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem2 = new SliderItem("ボイス", "voice", vols["voice"], 0, 100, 0, 0, "PreviewVolume"); SliderItem sliderItem3 = new SliderItem("効果音", "se", vols["se"], 0, 100, 0, 0, "PreviewVolume"); TextItem textItem4 = new TextItem("リセットすると保存された設定が全て消去されます", Color.red); SwitchItem switchItem4 = new SwitchItem("設定のリセット", "reset", false, Color.blue); DialogItem[] items = new DialogItem[] { textItem, divisorItem, textItem1, switchItem, switchItem2, switchItem3, divisorItem, textItem2, toggleItem, divisorItem, textItem3, sliderItem, sliderItem1, sliderItem2, sliderItem3, divisorItem, switchItem4, textItem4, divisorItem, }; #endif #if UNITY_ANDROID && !UNITY_EDITOR AndroidPlugin.ShowCustomDialog("設定いろいろ", "", items, gameObject.name, "OnReceiveResult", false, "決定", "キャンセル"); #endif } }