Author Topic: Need UISavedPopup.cs something as for UISavedOption.cs  (Read 3292 times)

faceOFF

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 22
    • View Profile
Need UISavedPopup.cs something as for UISavedOption.cs
« on: August 23, 2012, 12:00:48 AM »
It seems like "UISavedOption.cs" only can be read and save string from Options (in the inspector "UIPopupList")
For example I have three modes of game speed,  when I need to change speed value It's stored and then read.

faceOFF

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 22
    • View Profile
Re: Need UISavedPopup.cs something as for UISavedOption.cs
« Reply #1 on: August 23, 2012, 02:21:26 AM »
Тоже самое, на нашем ))

Нужно сохранить и считать (после выхода из меню или игры) Из UIPopupList строку Items (как я понял),
те я например выбрал скорость игры Fast, и она так и остаётся, пока я не выберу другую..
Надеюсь понятно объяснил? Да, если что, скорость переключается по типу (UJS):
  1.         if (selectedItem == "Fast")            
  2.          {
  3.                 Time.timeScale = 1.5;
  4.          }

Но как я понимаю мне не нужно запоминать Time.timeScale, тк Popup-ы всё равно всё скинут на то что в Selection...
Я тут начал карякать:
  1. using UnityEngine;
  2.  
  3. [AddComponentMenu("NGUI/Interaction/Saved Popup")]
  4. public class UISavedPopup : MonoBehaviour
  5. {
  6.         public string keyName;
  7.  
  8.         string key { get { return (string.IsNullOrEmpty(keyName)) ? "NGUI State: " + name : keyName; } }
  9.  
  10.         void Start ()
  11.                
  12.         {
  13.                 UIPopupList mSelectedItem = GetComponent<UIPopupList>();
  14.                 PlayerPrefs.GetString(keyName, mSelectedItem.ToString());
  15.         }
  16.        
  17.         void Save (GameObject go)
  18.         {
  19.                 UIPopupList mSelectedItem = GetComponent<UIPopupList>();
  20.                 PlayerPrefs.SetString(keyName, mSelectedItem.ToString());
  21.         }
  22. }


Только не надо разбирать что у меня не правильно))
Просто скажите что сделать, или переделать... тк я не синтаксис учу в данном случае, да и PlayerPrefs прекрасно работает со штатным GUI Юьки и моими скриптами, но вот обратиться к вашим скриптам частенько проблема!
И потом простой и полноценный ответ избавит от множества подобных вопросов не только меня!
В идеале скриптик похожий на UISavedOption.cs, только для UIPopupList..
У меня пока всё))
« Last Edit: August 23, 2012, 02:31:03 AM by faceOFF »

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: Need UISavedPopup.cs something as for UISavedOption.cs
« Reply #2 on: August 23, 2012, 06:14:59 AM »
Вот этот скрипт должен работать на обоих чек-боксах и всплывающих списков.

  1. //----------------------------------------------
  2. //            NGUI: Next-Gen UI kit
  3. // Copyright © 2011-2012 Tasharen Entertainment
  4. //----------------------------------------------
  5.  
  6. using UnityEngine;
  7.  
  8. /// <summary>
  9. /// Attach this script to a popup list, the parent of a group of checkboxes, or to a checkbox itself to save its state.
  10. /// </summary>
  11.  
  12. [AddComponentMenu("NGUI/Interaction/Saved Option")]
  13. public class UISavedOption : MonoBehaviour
  14. {
  15.         public string keyName;
  16.  
  17.         string key { get { return (string.IsNullOrEmpty(keyName)) ? "NGUI State: " + name : keyName; } }
  18.  
  19.         UIPopupList mList;
  20.         UICheckbox mCheck;
  21.  
  22.         /// <summary>
  23.         /// Cache the components and register a listener callback.
  24.         /// </summary>
  25.  
  26.         void Awake ()
  27.         {
  28.                 mList = GetComponent<UIPopupList>();
  29.                 mCheck = GetComponent<UICheckbox>();
  30.                 if (mList != null) mList.onSelectionChange += SaveSelection;
  31.                 if (mCheck != null) mCheck.onStateChange += SaveState;
  32.         }
  33.  
  34.         /// <summary>
  35.         /// Remove the callback.
  36.         /// </summary>
  37.  
  38.         void OnDestroy () { if (mList != null) mList.onSelectionChange -= SaveSelection; }
  39.  
  40.         /// <summary>
  41.         /// Load and set the state of the checkboxes.
  42.         /// </summary>
  43.  
  44.         void OnEnable ()
  45.         {
  46.                 string s = PlayerPrefs.GetString(key);
  47.  
  48.                 if (!string.IsNullOrEmpty(s))
  49.                 {
  50.                         if (mList != null)
  51.                         {
  52.                                 mList.selection = s;
  53.                                 return;
  54.                         }
  55.  
  56.                         if (mCheck != null)
  57.                         {
  58.                                 mCheck.isChecked = (s == "true");
  59.                         }
  60.                         else
  61.                         {
  62.                                 UICheckbox[] checkboxes = GetComponentsInChildren<UICheckbox>();
  63.  
  64.                                 for (int i = 0, imax = checkboxes.Length; i < imax; ++i)
  65.                                 {
  66.                                         UICheckbox ch = checkboxes[i];
  67.                                         ch.isChecked = (ch.name == s);
  68.                                 }
  69.                         }
  70.                 }
  71.         }
  72.  
  73.         /// <summary>
  74.         /// Save the state on destroy.
  75.         /// </summary>
  76.  
  77.         void OnDisable ()
  78.         {
  79.                 if (mCheck == null && mList == null)
  80.                 {
  81.                         UICheckbox[] checkboxes = GetComponentsInChildren<UICheckbox>();
  82.  
  83.                         for (int i = 0, imax = checkboxes.Length; i < imax; ++i)
  84.                         {
  85.                                 UICheckbox ch = checkboxes[i];
  86.  
  87.                                 if (ch.isChecked)
  88.                                 {
  89.                                         SaveSelection(ch.name);
  90.                                         break;
  91.                                 }
  92.                         }
  93.                 }
  94.         }
  95.  
  96.         /// <summary>
  97.         /// Save the selection.
  98.         /// </summary>
  99.  
  100.         void SaveSelection (string selection) { PlayerPrefs.SetString(key, selection); }
  101.  
  102.         /// <summary>
  103.         /// Save the state.
  104.         /// </summary>
  105.  
  106.         void SaveState (bool state) { PlayerPrefs.SetString(key, state ? "true" : "false"); }
  107. }
« Last Edit: August 23, 2012, 07:58:49 AM by ArenMook »

faceOFF

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 22
    • View Profile
Re: Need UISavedPopup.cs something as for UISavedOption.cs
« Reply #3 on: August 23, 2012, 07:50:48 AM »
Ахренеть! Прости за эмоции!
Всё работает прекрасно!
Просто огромное человеческое спасибо!

И для народа по енг как умею)):

Real! It's work fine!!!
Thanks a lot!
God bless you!