2017年6月4日 星期日

[Unity]Remote Settings 簡介與實作

這篇的Remote Settings不是那個裝置與Unity Editor連線測試的Unity Remote呦, 他是 Unity Analytics Service 底下的一個功能😄

Remote Settings提供開發者一個方便更新數值的管道, 可以不必跟新輸出檔、不必自己架server, 即可實現遊戲數值的熱跟新, 而且目前是免費的

Remote Settings在Unity5.5以上的版本即可使用
本篇將會實作一個簡單的例子來介紹Remote Settings, 內容含括:

  • 編輯器與後台的設定
  • 實作後台資料取得與跟新
  • Remote Settings Component的使用

1.編輯器與後台設定

1-1.建立一個新的專案, 並把 Enable Unity Analytics 設On (需要登入Unity account)

如果這邊錯過了, 也可以在 Window->Services 中開


1-2.至Asset Store導入Unity Analytics Remote Settings(https://www.assetstore.unity3d.com/en/#!/content/89317)進專案 :

1-3.點選Window->Unity Analytics->Remote Settings, 會開啟Remote Settings視窗, 這時會需要你輸入Project Secret Key

1-4.承1-3, 登入至 https://analytics.cloud.unity3d.com/ , 選擇剛剛開的專案, 進入專案面板後點選右方的 Configure 即可找到Project Secret Key, 將其輸入至步驟3所開啟的視窗中

1-5.接著我們要在Unity Analytics後台網頁設定我們要熱跟新的Key, 在步驟4所開啟的專案面板中點選Remote Settings進入設定頁面

1-6.Configure選擇Development, 然後如下圖添入資料後按 Add 新增key, 接著按 Sync 同步資料
欄位1: key的名稱, 此例填入TestString
欄位2: Key的資料型態, 此例選擇String
欄位3: Key的值, 此例我們填入 aaa


順帶一提, Configure選擇Release表示專案 Build Setting 沒勾選 Development Build 的輸出檔可用此設定
而Configure選擇Development表示在編輯器中與專案 Build Setting 有勾選 Development Build 的輸出檔可用此設定

此例只會使用編輯器進行測試, 因此選用Development

1-7.回到步驟1-3所開啟的視窗, 點選 Refresh 後即可看到我們剛剛增加的資料

2.功能撰寫與測試

2-1.在Hierarchy中點選 右鍵->UI->Text , 新增一個UI文字, 並將其設定置Game view可見之位置與大小





























2-2.在專案中新增一C# Script, 命名為TestLoader, 並撰寫如下內容
using UnityEngine;
using UnityEngine.UI;

public class TestLoader : MonoBehaviour
{
    public Text TestText;
    //當找不到key時, 所使用的字
    private string defaultString = "Default String";

 void Start ()
    {
        //註冊Updated事件, 當專案面板的Remote Setting有變動時, 重開專案即會觸發此事件
        RemoteSettings.Updated += new RemoteSettings.UpdatedEventHandler(HandleRemoteUpdate);
    }

    private void HandleRemoteUpdate()
    {
        //使用在專案面版的key來取值, 如果在面板沒有設定該key, 則會是用定義值defaultString
        TestText.text = RemoteSettings.GetString("TestString", defaultString);
    }
}

2-3.將TestLoader掛載在 Main Camera 上, 並將步驟2-1新增的Text拉至其Test Text欄位
















2-4.點選Play, 即可看到在步驟1-6所設置的值aaa


2-5.至步驟1-6的Remote Setting面板, 將欄位3的值改為bbb, 然後按 Sync 同步資料








2-6.回到編輯器, 點選Play, 即可看到在步驟2-5所設置的值bbb
















3.使用Remote Setting Component

除了直接撰寫程式碼來取得後臺設定的值外, Unity也提供了元件讓開發者可以不用寫程式, 直接靠拖拉與點選的方式即可取得值和套用在其他原件上

3-1.移除步驟2-3在 Main Camera 上所掛載的 TestLoader


3-2.在Text上新增一個RemoteSettings


 3-2.在RemoteSettings的Parameters上點選+, 創建一個新的Parameter

3-3.如下圖, 將Text拉進, 然後右邊的選單選擇Text->text, 而下面的Remote Setting Key則選擇"TestString"












3-4.點選Play, Text即可顯示我們在後台為TestString這個key所設定的值















以上

>>>>>>

後記:
Remote Settings適合小型專案使用, 不需要架server即可實現熱更遊戲數值
可惜目前的版本在跟新時並沒有廣播功能, 也就是說假如你在跟新時玩家手中的遊戲是開啟的, RemoteSettings.Updated並不會被觸發, 直到下一次玩家重新開啟遊戲時, 更新才會被套用

1 則留言: