|
| 1 | +''' |
| 2 | +本節文章 |
| 3 | +https://learnscript.net/zh-hant/obs-python-scripting/junior/data/load-and-save-json/ 如何載入和儲存 JSON |
| 4 | +''' |
| 5 | + |
| 6 | +# 匯入模組 obspython |
| 7 | +import obspython as obs |
| 8 | + |
| 9 | +def script_properties(): |
| 10 | + props = obs.obs_properties_create() |
| 11 | + |
| 12 | + # 添加儲存和載入 JSON 檔案的按鈕 |
| 13 | + obs.obs_properties_add_button(props, 'save', '儲存', save_clicked) |
| 14 | + obs.obs_properties_add_button(props, 'load', '載入', load_clicked) |
| 15 | + |
| 16 | + return props |
| 17 | + |
| 18 | +# 玩家經驗值 |
| 19 | +exp = 0 |
| 20 | +# 玩家等級 |
| 21 | +level = 0 |
| 22 | + |
| 23 | +def save_clicked(props, prop): |
| 24 | + # 建立資料物件,並寫入玩家資訊 |
| 25 | + data = obs.obs_data_create() |
| 26 | + obs.obs_data_set_int(data, 'exp', exp) |
| 27 | + obs.obs_data_set_int(data, 'level', level) |
| 28 | + |
| 29 | + # 將資料物件儲存至檔案 player.json,如果檔案存在,則先將其備份為 player.backup.json |
| 30 | + obs.obs_data_save_json_safe(data, 'player.json', '.temp', '.backup') |
| 31 | + # 釋放資料物件 |
| 32 | + obs.obs_data_release(data) |
| 33 | + |
| 34 | +def load_clicked(props, prop): |
| 35 | + global exp, level |
| 36 | + |
| 37 | + # 從檔案 player.json 載入玩家資訊 |
| 38 | + data = obs.obs_data_create_from_json_file_safe('player.json', '.backup') |
| 39 | + |
| 40 | + # 讀取玩家的經驗值和等級 |
| 41 | + exp = obs.obs_data_get_int(data, 'exp') |
| 42 | + level = obs.obs_data_get_int(data, 'level') |
| 43 | + # 釋放資料物件 |
| 44 | + obs.obs_data_release(data) |
| 45 | + |
| 46 | + obs.script_log(obs.LOG_INFO, f'經驗值:{exp},等級:{level}') |
0 commit comments