113 lines
3.6 KiB
Python
113 lines
3.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
脚本管理界面测试
|
|
|
|
这个脚本测试新添加的脚本管理界面功能:
|
|
1. 脚本菜单
|
|
2. 脚本管理面板
|
|
3. 脚本挂载和卸载
|
|
4. 属性面板中的脚本信息显示
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
|
|
# 确保能导入项目模块
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
from main import MyWorld
|
|
from ui.main_window import setup_main_window
|
|
from panda3d.core import *
|
|
|
|
def test_script_management():
|
|
"""测试脚本管理功能"""
|
|
print("=== 脚本管理界面测试 ===")
|
|
|
|
# 创建世界对象
|
|
world = MyWorld()
|
|
|
|
# 设置主窗口
|
|
app, main_window = setup_main_window(world)
|
|
|
|
# 创建一些测试对象
|
|
print("\n1. 创建测试对象...")
|
|
|
|
# 创建一个立方体
|
|
cube = world.loader.loadModel("models/environment")
|
|
if cube:
|
|
cube.reparentTo(world.render)
|
|
cube.setPos(0, 10, 0)
|
|
cube.setScale(0.5)
|
|
cube.setName("测试立方体")
|
|
world.models.append(cube)
|
|
print("✓ 创建立方体")
|
|
|
|
# 更新场景树
|
|
world.updateSceneTree()
|
|
|
|
print("\n2. 脚本系统状态:")
|
|
print(f"✓ 脚本系统已启动: {world.script_manager.engine.update_task is not None}")
|
|
print(f"✓ 热重载已启用: {world.script_manager.hot_reload_enabled}")
|
|
print(f"✓ 可用脚本数量: {len(world.getAvailableScripts())}")
|
|
|
|
print("\n3. 测试脚本创建...")
|
|
# 创建一些测试脚本
|
|
test_scripts = [
|
|
("TestRotator", "basic"),
|
|
("TestMover", "movement"),
|
|
("TestScaler", "basic")
|
|
]
|
|
|
|
for script_name, template in test_scripts:
|
|
try:
|
|
success = world.createScript(script_name, template)
|
|
if success:
|
|
print(f"✓ 创建脚本: {script_name}")
|
|
else:
|
|
print(f"✗ 创建脚本失败: {script_name}")
|
|
except Exception as e:
|
|
print(f"✗ 创建脚本出错 {script_name}: {e}")
|
|
|
|
print("\n4. 加载所有脚本...")
|
|
try:
|
|
scripts_loaded = world.loadAllScripts()
|
|
print(f"✓ 成功加载 {len(scripts_loaded)} 个脚本")
|
|
for script_name in scripts_loaded:
|
|
print(f" - {script_name}")
|
|
except Exception as e:
|
|
print(f"✗ 加载脚本失败: {e}")
|
|
|
|
print("\n5. 测试脚本挂载...")
|
|
if cube and world.getAvailableScripts():
|
|
script_name = world.getAvailableScripts()[0]
|
|
try:
|
|
success = world.addScript(cube, script_name)
|
|
if success:
|
|
print(f"✓ 成功挂载脚本 {script_name} 到立方体")
|
|
|
|
# 获取挂载的脚本
|
|
scripts = world.getScripts(cube)
|
|
print(f"✓ 立方体上的脚本数量: {len(scripts)}")
|
|
else:
|
|
print(f"✗ 挂载脚本失败")
|
|
except Exception as e:
|
|
print(f"✗ 挂载脚本出错: {e}")
|
|
|
|
print("\n6. 界面使用说明:")
|
|
print("─" * 50)
|
|
print("• 使用菜单栏 -> 脚本 来访问脚本功能")
|
|
print("• 在右侧停靠窗口中查看'脚本管理'标签页")
|
|
print("• 选择场景中的对象查看其脚本属性")
|
|
print("• 使用脚本面板挂载/卸载脚本")
|
|
print("• 双击脚本名称可以(将来)打开外部编辑器")
|
|
print("• 热重载功能会自动检测脚本文件变化")
|
|
print("─" * 50)
|
|
|
|
print("\n✓ 脚本管理界面测试完成!")
|
|
print("现在可以通过GUI界面管理脚本了。")
|
|
|
|
# 启动应用
|
|
return app.exec_()
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(test_script_management()) |