|
| 1 | +# 匯入模組 obspython 和 vec2 |
| 2 | +import obspython as obs |
| 3 | +from obspython import vec2 |
| 4 | + |
| 5 | +def test(props, prop): |
| 6 | + # 取得場景 Scene 對應的場景物件 |
| 7 | + source_scene = obs.obs_get_source_by_name('Scene') |
| 8 | + scene = obs.obs_scene_from_source(source_scene) |
| 9 | + |
| 10 | + # 兩次尋找場景項 Welcome,第二次包括群組 |
| 11 | + welcome = obs.obs_scene_find_source(scene, 'Welcome') |
| 12 | + obs.script_log(obs.LOG_INFO, f'找到了 Welcome?{welcome != None}') |
| 13 | + welcome = obs.obs_scene_find_source_recursive(scene, 'Welcome') |
| 14 | + obs.script_log(obs.LOG_INFO, f'找到了 Welcome(包括群組中的)?{welcome != None}') |
| 15 | + |
| 16 | + # 顯示場景項 Welcome 的來源類型識別碼 |
| 17 | + source_welcome = obs.obs_sceneitem_get_source(welcome) |
| 18 | + obs.script_log(obs.LOG_INFO, f'{obs.obs_source_get_unversioned_id(source_welcome)}') |
| 19 | + |
| 20 | + # 將場景項 Welcome 移除 |
| 21 | + obs.obs_sceneitem_remove(welcome) |
| 22 | + |
| 23 | + # 將場景項 Hi 移動至末尾 |
| 24 | + hi = obs.obs_scene_find_source(scene, 'Hi') |
| 25 | + obs.obs_sceneitem_set_order_position(hi, 0) |
| 26 | + |
| 27 | + # 設定場景項 Hi 的位置 |
| 28 | + pos = vec2() |
| 29 | + pos.x = 100 |
| 30 | + pos.y = 100 |
| 31 | + obs.obs_sceneitem_set_pos(hi, pos) |
| 32 | + # 設定場景項 Hi 的旋轉角度 |
| 33 | + obs.obs_sceneitem_set_rot(hi, 30) |
| 34 | + # 設定場景項 Hi 的縮放 |
| 35 | + scale = vec2() |
| 36 | + scale.x = 1.5 |
| 37 | + scale.y = 1.5 |
| 38 | + obs.obs_sceneitem_set_scale(hi, scale) |
| 39 | + |
| 40 | + # 儲存並載入場景項的變型資訊,使中途的修改無效 |
| 41 | + states = obs.obs_scene_save_transform_states(scene, True) |
| 42 | + # 設定場景項 Hi 的旋轉角度 |
| 43 | + obs.obs_sceneitem_set_rot(hi, 90) |
| 44 | + obs.obs_scene_load_transform_states(obs.obs_data_get_json(states)) |
| 45 | + |
| 46 | + # 為場景項 Hi 增加滑出的隱藏轉場效果 |
| 47 | + transition = obs.obs_source_create('swipe_transition', 'hi_hide_transition', None, None) |
| 48 | + obs.obs_sceneitem_set_transition(hi, False, transition) |
| 49 | + obs.obs_sceneitem_do_transition(hi, False) |
| 50 | + # 釋放來源物件 |
| 51 | + obs.obs_source_release(transition) |
| 52 | + |
| 53 | + # 建立一個新的群組,並將 Hi 加入其中 |
| 54 | + message = obs.obs_scene_add_group(scene, 'Message') |
| 55 | + obs.obs_sceneitem_group_add_item(message, hi) |
| 56 | + |
| 57 | + # 取得場景項 Bye 所在的群組 |
| 58 | + bye = obs.obs_scene_find_source_recursive(scene, 'Bye') |
| 59 | + group = obs.obs_sceneitem_get_group(scene, bye) |
| 60 | + obs.script_log(obs.LOG_INFO, f'是群組?{obs.obs_sceneitem_is_group(group)}') |
| 61 | + |
| 62 | + gs = obs.obs_get_source_by_name('Group') |
| 63 | + g = obs.obs_group_from_source(gs) |
| 64 | + obs.script_log(obs.LOG_INFO, f'是群組?{obs.obs_sceneitem_is_group(g)}') |
| 65 | + obs.obs_source_release(gs) |
| 66 | + |
| 67 | + # 釋放來源物件 |
| 68 | + obs.obs_source_release(source_scene) |
| 69 | + |
| 70 | +# 為腳本新增一個用於測試的按鈕,回呼函式為 test |
| 71 | +def script_properties(): |
| 72 | + props = obs.obs_properties_create() |
| 73 | + obs.obs_properties_add_button(props, 'test', '測試', test) |
| 74 | + return props |
0 commit comments