求助:如何使用Ursina制作游戏主启动界面
Ursina游戏主启动界面实现方案
以下是适配你现有代码的主界面实现代码,包含「开始游戏」按钮和「控制选项」弹窗功能:
核心逻辑
默认隐藏游戏场景所有实体,显示菜单UI;点击「开始游戏」后切换为游戏状态,点击「控制选项」可查看操作说明。
完整修改代码
from ursina import * from ursina.prefabs.health_bar import HealthBar from ursina.prefabs.popup import Popup app = Ursina() # ---------------------- 主菜单UI ---------------------- # 菜单背景面板 menu_panel = Panel( parent=camera.ui, color=color.black.tint(0.7), scale=(1, 1), z=1 ) # 游戏标题 title_text = Text( text="我的Ursina游戏", parent=camera.ui, y=0.3, scale=2, color=color.white, z=0 ) # 开始游戏按钮 def start_game(): # 隐藏菜单,显示游戏场景 menu_panel.enabled = False title_text.enabled = False start_btn.enabled = False controls_btn.enabled = False # 启用游戏实体 ground.enabled = True player.enabled = True health_bar.enabled = True house.enabled = True tree.enabled = True start_btn = Button( text="开始游戏", parent=camera.ui, y=0, scale=(0.2, 0.1), color=color.green.tint(-0.2), on_click=start_game, z=0 ) # 控制选项按钮 def show_controls(): Popup( title="操作说明", content=""" W/A/S/D:移动 Shift:加速(速度25) Control:恢复正常速度(速度10) 空格:跳跃 """, buttons=["关闭"] ) controls_btn = Button( text="控制选项", parent=camera.ui, y=-0.15, scale=(0.2, 0.1), color=color.blue.tint(-0.2), on_click=show_controls, z=0 ) # ---------------------- 游戏场景实体 ---------------------- # 初始隐藏所有游戏实体,等待开始游戏 ground = Entity( model="untitled.blend", texture="Soul Sand.jpg", scale=400, collider="mesh", enabled=False # 默认隐藏 ) player = FirstPersonController( model="player.blend", position=(-6.39844, 148.284, 62.5471), jump_height=7, jump_duration=0.5, speed=10, texture="Player Texture.jpg", collider="mesh", enabled=False # 默认隐藏 ) camera.z = None health_bar = HealthBar( bar_color=color.lime.tint(-.25), roundness=.5, value=100, enabled=False # 默认隐藏 ) def input(key): if key == "shift": player.speed = 25 elif key == "control": player.speed = 10 house = Entity( model="House.blend", texture="Tree Texture.jpg", scale=2, collider="mesh", position=(0, 146.3, 15), enabled=False # 默认隐藏 ) tree = Entity( model="Tree.blend", scale=15, texture="Tree Texture.jpg", collider="mesh", position=(15.5488, 140, 55.0674), enabled=False # 默认隐藏 ) app.run()
关键说明
- 使用
Panel作为菜单背景,通过enabled属性控制元素显示/隐藏 - 利用Ursina内置的
Popup组件快速实现控制说明弹窗 - 所有游戏实体初始设为
enabled=False,点击开始按钮后切换为True - 按钮的
on_click参数绑定对应功能函数,实现交互逻辑
内容的提问来源于stack exchange,提问作者Sanipower
相关产品推荐
相关产品推荐

