2017-07-12 34 views
0

我最近實施了一輪財富轉動和獎勵,就像它應該。 但是我希望它每天只能旋轉一次,當玩家觸摸旋轉按鈕。 在這種狀態下,玩家可以隨意旋轉,並獲得獎勵。 我如何實現它可以每天只能紡一次? 我試圖在PlayerPrefs等中保存日期,但一切都失敗了? 希望如果有人能幫我解決我的問題。在Unity中每天只旋轉一次車輪

+0

那你試試? PlayerPrefs是解決這個問題的一種方法。另外,你的遊戲支持哪些平臺? – Anil

+0

我想用playerprefs來解決這個問題。 – theNewbiee

+0

哦,對不起,我不想擊中進入等待一秒鐘 – theNewbiee

回答

1
  1. 每一次24小時:

保存DateTime.Now.Ticks(從0年的數字,長的起息日)在PlayerPrefs字符串,然後long.Parse()它當u要讀它:

bool ShowWheelToPlayer() 
    { 
     if (DateTime.Now.Ticks - TimeSpan.TicksPerDay > long.Parse(PlayerPrefs.GetString("LastDateSpun", "0"))) 
      return true; 
     else 
      return false; 
    } 

    void OnWheelSpun() 
    { 
     PlayerPrefs.SetString("LastDateSpun", DateTime.Now.Ticks.ToString()); 
    } 
  • 每天一次:
  • 保存DateTime.Now在YYYY-MM-DD格式。當我們讀到它時 - 小時和分鐘將被設置爲0,所以當我們將.AddDays(1)與它比較時。

    例如播放器轉輪2017-07-08 12:31,我們將節省2017-07-08。當比較我們將添加到它第一天:2017-07-09所以玩家將能夠旋輪時再DateTime.Now達到2017-07-09 00:01

    bool ShowWheelToPlayer() 
        { 
         if (DateTime.Now > 
           DateTime.ParseExact(PlayerPrefs.GetString("LastDateSpun", "0000-00-00"), "yyyy-MM-dd", 
           System.Globalization.CultureInfo.InvariantCulture) 
           .AddDays(1)) 
          return true; 
         else 
          return false; 
        } 
    
        void OnWheelSpun() 
        { 
         PlayerPrefs.SetString("LastDateSpun", 
          DateTime.Now.Year + "-" 
          + DateTime.Now.Month.ToString().PadLeft(2, '0') + "-" 
          + DateTime.Now.Day.ToString().PadLeft(2, '0')); 
    
         Debug.Log(string.Format("Player spun wheel, saving date: {0}", 
          PlayerPrefs.GetString("LastDateSpun"))); 
        } 
    

    此代碼:PadLeft(2, '0')可以確保我們保存幾個月,用兩位數字天(而不是07 7)。這樣我們保持我們的格式:yyyy-MM-dd。

    重播評論:

    public void YourSpinMethod() //attach to button 
    { 
        if(ShowWheelToPlayer()) 
        { 
         //spin wheel code 
         OnWheelSpun(); 
        } 
    } 
    
    +0

    嗨謝謝你的答案。我讀了這個討論:http://answers.unity3d.com/questions/525604/doing-stuff-once-a-day.html,但仍然不知道如何做到這一點。 – theNewbiee

    +0

    而且我也不理解你的代碼。你能不能一步一步向我解釋如何做到這一點?當然,只有當你有時間這樣做。但我會很感激。 – theNewbiee

    +0

    Ayy它是錯誤的,增加了' - TimeSpan.TicksPerDay',所以它將每24小時工作一次 – kamyker