這篇的Remote Settings不是那個裝置與Unity Editor連線測試的Unity Remote呦, 他是 Unity Analytics Service 底下的一個功能😄
Remote Settings提供開發者一個方便更新數值的管道, 可以不必跟新輸出檔、不必自己架server, 即可實現遊戲數值的熱跟新, 而且目前是免費的
本篇將會實作一個簡單的例子來介紹Remote Settings, 內容含括:
- 編輯器與後台的設定
- 實作後台資料取得與跟新
- Remote Settings Component的使用
1.編輯器與後台設定
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-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
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並不會被觸發, 直到下一次玩家重新開啟遊戲時, 更新才會被套用
除了直接撰寫程式碼來取得後臺設定的值外, 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並不會被觸發, 直到下一次玩家重新開啟遊戲時, 更新才會被套用
有趣的功能 :D
回覆刪除