170 lines
5.9 KiB
Python
170 lines
5.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
脚本系统快速测试
|
|
验证脚本系统的基本功能是否正常工作
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
def quick_test():
|
|
"""快速测试脚本系统"""
|
|
print("=== 脚本系统快速测试 ===\n")
|
|
|
|
try:
|
|
# 1. 导入主程序
|
|
print("1. 导入主程序...")
|
|
from main import MyWorld
|
|
print("✓ 主程序导入成功")
|
|
|
|
# 2. 创建世界实例
|
|
print("\n2. 创建世界实例...")
|
|
world = MyWorld()
|
|
print("✓ 世界实例创建成功")
|
|
|
|
# 3. 检查脚本管理器
|
|
print("\n3. 检查脚本管理器...")
|
|
if hasattr(world, 'script_manager'):
|
|
print("✓ 脚本管理器存在")
|
|
print(f" - 脚本引擎: {world.script_manager.engine}")
|
|
print(f" - 脚本加载器: {world.script_manager.loader}")
|
|
print(f" - 脚本API: {world.script_manager.api}")
|
|
else:
|
|
print("✗ 脚本管理器不存在")
|
|
return False
|
|
|
|
# 4. 测试脚本目录创建
|
|
print("\n4. 测试脚本目录...")
|
|
scripts_dir = world.script_manager.scripts_directory
|
|
if os.path.exists(scripts_dir):
|
|
print(f"✓ 脚本目录存在: {scripts_dir}")
|
|
|
|
# 列出目录中的文件
|
|
files = os.listdir(scripts_dir)
|
|
print(f" - 目录中的文件: {files}")
|
|
else:
|
|
print(f"✗ 脚本目录不存在: {scripts_dir}")
|
|
|
|
# 5. 测试脚本加载
|
|
print("\n5. 测试脚本加载...")
|
|
world.loadAllScripts()
|
|
available_scripts = world.getAvailableScripts()
|
|
print(f"✓ 可用脚本: {available_scripts}")
|
|
|
|
# 6. 测试对象创建和脚本挂载
|
|
print("\n6. 测试脚本挂载...")
|
|
test_object = world.render.attachNewNode("TestObject")
|
|
print(f"✓ 创建测试对象: {test_object.getName()}")
|
|
|
|
if "ExampleScript" in available_scripts:
|
|
script_comp = world.addScript(test_object, "ExampleScript")
|
|
if script_comp:
|
|
print("✓ 脚本挂载成功")
|
|
print(f" - 脚本类型: {script_comp.script_instance.__class__.__name__}")
|
|
print(f" - 脚本启用: {script_comp.enabled}")
|
|
else:
|
|
print("✗ 脚本挂载失败")
|
|
else:
|
|
print("! 没有ExampleScript可用于测试")
|
|
|
|
# 7. 测试脚本系统状态
|
|
print("\n7. 脚本系统状态...")
|
|
engine = world.script_manager.engine
|
|
print(f" - 脚本引擎运行: {engine.update_task is not None}")
|
|
print(f" - 脚本组件数量: {len(engine.script_components)}")
|
|
print(f" - 有脚本的对象数量: {len(world.script_manager.object_scripts)}")
|
|
|
|
# 8. 测试脚本创建
|
|
print("\n8. 测试脚本创建...")
|
|
new_script_path = world.createScript("test_quick_script", "basic")
|
|
print(f"✓ 创建新脚本: {new_script_path}")
|
|
|
|
if os.path.exists(new_script_path):
|
|
print("✓ 脚本文件创建成功")
|
|
else:
|
|
print("✗ 脚本文件创建失败")
|
|
|
|
print("\n=== 快速测试完成 ===")
|
|
print("✓ 脚本系统基本功能正常")
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"\n✗ 测试过程中出现错误: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
|
|
def test_script_execution():
|
|
"""测试脚本执行"""
|
|
print("\n=== 脚本执行测试 ===")
|
|
|
|
try:
|
|
from main import MyWorld
|
|
|
|
world = MyWorld()
|
|
world.loadAllScripts()
|
|
|
|
# 创建测试对象
|
|
test_obj = world.render.attachNewNode("ExecutionTest")
|
|
test_obj.setPos(0, 10, 0)
|
|
|
|
# 添加脚本
|
|
available_scripts = world.getAvailableScripts()
|
|
if available_scripts:
|
|
script_name = available_scripts[0]
|
|
script_comp = world.addScript(test_obj, script_name)
|
|
|
|
if script_comp:
|
|
print(f"✓ 添加脚本: {script_name}")
|
|
|
|
# 手动触发脚本生命周期
|
|
print("\n模拟脚本执行...")
|
|
|
|
# Start
|
|
if not script_comp._started:
|
|
script_comp.start()
|
|
print("✓ 调用脚本start()方法")
|
|
|
|
# Update几次
|
|
for i in range(3):
|
|
script_comp.update(0.016) # 约60FPS
|
|
print(f"✓ 调用脚本update()方法 ({i+1}/3)")
|
|
|
|
# 禁用/启用测试
|
|
script_comp.set_enabled(False)
|
|
print("✓ 禁用脚本")
|
|
|
|
script_comp.set_enabled(True)
|
|
print("✓ 重新启用脚本")
|
|
|
|
# 销毁
|
|
script_comp.destroy()
|
|
print("✓ 销毁脚本")
|
|
|
|
print("\n✓ 脚本执行测试完成")
|
|
else:
|
|
print("✗ 脚本添加失败")
|
|
else:
|
|
print("! 没有可用脚本进行测试")
|
|
|
|
except Exception as e:
|
|
print(f"✗ 脚本执行测试失败: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# 运行快速测试
|
|
success = quick_test()
|
|
|
|
if success:
|
|
# 如果基本测试通过,运行执行测试
|
|
test_script_execution()
|
|
else:
|
|
print("\n基本测试失败,跳过执行测试")
|
|
|
|
print("\n测试完成!") |