UE5 启动Switchboard后,延迟自动连接并启动Ndisplay(修改Switchboard插件教程)

先言:Ndisplay的启动运行,正常要先启动Switchboard Listener和Switchboard,同时要依次手动点击①连接和②启动按钮,这样才能启动应用,如图所示:

本教程的目的是避免手动去点击界面连接和启动,运行Switchboard.bat后自动连接Switchboard Listener并启动应用

教程(以UE5.4为例)
1、打开UE引擎目录所在的SwitchBoard目录,修改3个文件

2、文本打开“config.py”文件,按ctrl+f

①搜索:all_settings = [setting for _, setting in self.basic_project_settings.items()] \

大概在2114行左右,新增两行代码

        all_settings = [setting for _, setting in self.basic_project_settings.items()] \
            + [setting for _, setting in self.osc_settings.items()] \
            + [setting for _, setting in self.auto_launch_all_settings.items()] \  #本行新增
            + [setting for _, setting in self.delay_time_settings.items()] \    #本行新增
            + [setting for _, setting in self.source_control_settings.items()] \
            + [setting for _, setting in self.unreal_insight_settings.items()] \
            + [setting for _, setting in self.mu_settings.items()]

②搜索:self.OSC_SERVER_PORT = self.osc_settings["osc_server_port"]

大概在2338行左右,后面换行新增一段代码

        self.OSC_SERVER_PORT = self.osc_settings["osc_server_port"]

        #以下为新增
        self.auto_launch_all_settings = {
            "auto_launch_all": BoolSetting(
                "auto_launch_all",
                "Auto_Launch_All",
                data.get('auto_launch_all', False),
                tool_tip="enable auto launch all devices"
            )
        }
        self.delay_time_settings = {
            "delay_time_connect": IntSetting(
                "delay_time_connect",
                "Delay Time Connect (s)",
                data.get('delay_time_connect', 10)
            ),
            "delay_time_launch": IntSetting(
                "delay_time_launch",
                "Delay Time Launch After Connect (s)",
                data.get('delay_time_launch', 10)
            )
        }
        self.DELAY_TIME_CONNECT = self.delay_time_settings["delay_time_connect"]
        self.DELAY_TIME_LAUNCH = self.delay_time_settings["delay_time_launch"]

③搜索:self.P4_ENGINE_PATH: PerforcePathSetting = self.source_control_settings["p4_engine_path"]

大概在2393行左右,后面新增一行代码:

        self.P4_ENGINE_PATH: PerforcePathSetting = self.source_control_settings["p4_engine_path"]
        # 以下为新增
        self.AUTO_LAUNCH_ALL = self.auto_launch_all_settings["auto_launch_all"]  

④搜索:data["osc_server_port"] = self.OSC_SERVER_PORT.get_value()

大概在2642行左右,后面新增三行代码,保存关闭

        data["osc_server_port"] = self.OSC_SERVER_PORT.get_value()

        # 以下为新增
        data['auto_launch_all'] = self.AUTO_LAUNCH_ALL.get_value()
        data['delay_time_connect'] = self.DELAY_TIME_CONNECT.get_value()
        data['delay_time_launch'] = self.DELAY_TIME_LAUNCH.get_value()

3、文本打开“settings_dialog.py”文件,按ctrl+f

①搜索:self.general_settings_list = [

新增一行代码

        self.general_settings_list = [
            self._create_config_path_settings(),
            self._create_auto_launch_settings(config),    #本行新增
            self._create_switchboard_settings(settings, config),
            self._create_project_settings(config),
            self._create_multi_user_server_settings(config)
        ]

②搜索:config.P4_ENABLED.signal_setting_changed.disconnect(self._on_source_control_setting_changed)

后面新增一行代码

        config.P4_ENABLED.signal_setting_changed.disconnect(self._on_source_control_setting_changed)
        # 以下新增
        config.AUTO_LAUNCH_ALL.signal_setting_changed.disconnect(self._on_auto_launch_setting_changed)  

③搜索:return self.ui.config_path_layout

后面新增一段代码

        return self.ui.config_path_layout

    # 以下为新增代码
    def _create_auto_launch_settings(self, config: Config):
        self.ui.auto_launch_settings_group = QtWidgets.QGroupBox()
        self.ui.auto_launch_settings_group.setTitle("Auto Launch Settings")
        self.ui.auto_launch_settings_group.setCheckable(True)
        self.ui.auto_launch_settings_group.setStyleSheet(
            'QGroupBox::indicator:checked:hover {image: url(:icons/images/check_box_checked_hovered.png);}'
            'QGroupBox::indicator:checked {image: url(:icons/images/check_box_checked.png);}'
            'QGroupBox::indicator:unchecked:hover {image: url(:icons/images/check_box_hovered.png);}'
            'QGroupBox::indicator:unchecked {image: url(:icons/images/check_box.png);}'
        )
        form_layout = QtWidgets.QFormLayout(self.ui.auto_launch_settings_group)
        self.ui.auto_launch_settings_group.setChecked(config.AUTO_LAUNCH_ALL.get_value())
        self.ui.auto_launch_settings_group.toggled.connect(self._on_group_auto_launch_changed)
        config.AUTO_LAUNCH_ALL.signal_setting_changed.connect(self._on_auto_launch_setting_changed)
        self._create_settings_section(config.delay_time_settings, form_layout)
        return self.ui.auto_launch_settings_group  

④搜索:self._create_settings_section(settings_to_show, form_layout)

后面新增一段代码,保存关闭

        self._create_settings_section(settings_to_show, form_layout)

    # 以下为新增代码
    def _on_group_auto_launch_changed(self):
        CONFIG.AUTO_LAUNCH_ALL.update_value(self.ui.auto_launch_settings_group.isChecked())
        CONFIG.save()
    def _on_auto_launch_setting_changed(self, old_vlaue: bool, new_value: bool):
        self.ui.auto_launch_settings_group.setChecked(new_value)  

4、文本打开“switchboard_dialog.py”文件,按ctrl+f

①搜索:self.set_multiuser_session_name(f'{SETTINGS.MUSERVER_SESSION_NAME}')

后面新增一段代码

        self.set_multiuser_session_name(f'{SETTINGS.MUSERVER_SESSION_NAME}')

        # 以下为新增代码
        if CONFIG.file_path:
            if CONFIG.AUTO_LAUNCH_ALL.get_value():
                LOGGER.success(f'Auto Launch ALL is Open !')
                delaytimeconnect = CONFIG.DELAY_TIME_CONNECT.get_value()
                delaytimelaunch = CONFIG.DELAY_TIME_LAUNCH.get_value()
                thread1 = threading.Timer(delaytimeconnect, self.set_delay_connect_all)
                thread1.start()
                thread2 = threading.Timer(delaytimeconnect + delaytimelaunch, self.set_delay_launch_all)
                thread2.start()_settings_group.setChecked(new_value)  

②搜索:self.have_warned_about_muserver = False

后面新增一段代码,保存关闭

        self.have_warned_about_muserver = False
        
    # 以下为新增代码
    def set_delay_connect_all(self):
        try:
            self.connect_all_button_clicked(QtCore.Qt.Checked)
            LOGGER.success(f'Connect All Device!')
        except:
            LOGGER.error(f'can not Use this function')

    def set_delay_launch_all(self):
        try:
            self.launch_all_button_clicked(QtCore.Qt.Checked)
            LOGGER.success(f'Launch All Device!')
        except:
            LOGGER.error(f'can not Use this function')

5、启动switchboard,打开Setting,勾选AutoLaunchSettings,参数分别填1,这样下次启动Switchboard就会自动就连接和启动Ndisplay了。

参考:修改switchboard启动后添加延时自动连接并启动所有设备(UnrealEnging4.27)_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值