#!/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测试完成!")