diff --git a/Assets/Models/jxb.glb b/Assets/Models/jxb.glb new file mode 100644 index 00000000..2546206f Binary files /dev/null and b/Assets/Models/jxb.glb differ diff --git a/Assets/Models/jxb.glb.meta b/Assets/Models/jxb.glb.meta new file mode 100644 index 00000000..0de72b67 --- /dev/null +++ b/Assets/Models/jxb.glb.meta @@ -0,0 +1,8 @@ +{ + "guid": "96aefc6e2ae14575a3bd6d29a6cd7a0c", + "asset_type": "model", + "source_hash": "7916e67bf644e61e2d7b7776ef8df40ef8623aaceda16b873c64d0a3f1a4faba", + "importer": "model_importer", + "import_settings": {}, + "dependency_guids": [] +} \ No newline at end of file diff --git a/main.py b/main.py index 8276a90a..86f28261 100644 --- a/main.py +++ b/main.py @@ -536,20 +536,36 @@ class MyWorld(PanelDelegates, CoreWorld): visible = bool(visible) previous = bool(getattr(self, attr_name, False)) - setattr(self, attr_name, visible) if panel_key == "web" and previous != visible: + setattr(self, attr_name, visible) if not visible: try: self.editor_panels._stop_imgui_webview() except Exception: pass + return if panel_key == "lui_editor" and hasattr(self, "lui_manager"): + lui_available = bool(getattr(self.lui_manager, "lui_enabled", False)) + if visible and not lui_available: + setattr(self, attr_name, False) + if hasattr(self, "messages"): + self.add_warning_message("当前环境未启用LUI(缺少 lui 模块),LUI编辑器不可用") + else: + print("⚠ 当前环境未启用LUI(缺少 lui 模块),LUI编辑器不可用") + return + + setattr(self, attr_name, visible) try: self.lui_manager.show_editor = visible + if visible and not previous: + self.lui_manager._request_window_focus = True except Exception: pass + return + + setattr(self, attr_name, visible) def reset_panel_visibility_to_defaults(self): for panel_key, default_visible in self._default_panel_visibility.items(): diff --git a/ui/LUI/lui_manager_editor.py b/ui/LUI/lui_manager_editor.py index 6542b592..79e009f3 100644 --- a/ui/LUI/lui_manager_editor.py +++ b/ui/LUI/lui_manager_editor.py @@ -1562,7 +1562,22 @@ class LUIManagerEditorMixin: if not self.lui_enabled or not self.show_editor: return + default_pos = (20.0, 40.0) + try: + viewport = imgui.get_main_viewport() + default_pos = ( + float(viewport.pos.x) + 20.0, + float(viewport.pos.y) + float(imgui.get_frame_height()) + 20.0, + ) + except Exception: + pass + imgui.set_next_window_size((350, 600), imgui.Cond_.first_use_ever) + imgui.set_next_window_pos(default_pos, imgui.Cond_.appearing) + if getattr(self, "_request_window_focus", False): + self._request_window_focus = False + imgui.set_next_window_pos(default_pos, imgui.Cond_.always) + imgui.set_next_window_focus() with imgui_ctx.begin("LUI编辑器", self.show_editor) as window: self.show_editor = bool(window.opened) if hasattr(self, "world") and hasattr(self.world, "set_panel_visible"): diff --git a/ui/panels/editor_panels_top.py b/ui/panels/editor_panels_top.py index 81ff9130..670fcf58 100644 --- a/ui/panels/editor_panels_top.py +++ b/ui/panels/editor_panels_top.py @@ -331,9 +331,19 @@ class EditorPanelsTopMixin: changed, visible = imgui.menu_item("脚本管理", "", self.app.is_panel_visible("script"), True) if changed: self.app.set_panel_visible("script", visible) - changed, visible = imgui.menu_item("LUI编辑器", "", self.app.is_panel_visible("lui_editor"), True) + lui_available = bool( + getattr(getattr(self.app, "lui_manager", None), "lui_enabled", False) + ) + changed, visible = imgui.menu_item( + "LUI编辑器", + "", + self.app.is_panel_visible("lui_editor"), + lui_available, + ) if changed: self.app.set_panel_visible("lui_editor", visible) + if not lui_available and imgui.is_item_hovered(): + imgui.set_tooltip("当前环境未启用LUI(缺少 lui 模块)") changed, visible = imgui.menu_item("Web面板", "", self.app.is_panel_visible("web"), True) if changed: self.app.set_panel_visible("web", visible)