当前位置: 首页 > article >正文

ATF IronPython集成:如何在C应用中嵌入Python脚本引擎的完整指南

ATF IronPython集成如何在C#应用中嵌入Python脚本引擎的完整指南【免费下载链接】ATFAuthoring Tools Framework (ATF) is a set of C#/.NET components for making tools on Windows. ATF has been in continuous development in Sony Computer Entertainments (SCE) Worldwide Studios central tools group since early 2005. ATF has been used by most SCE first party studios to make many custom tools such as Naughty Dog’s level editor and shader editor for The Last of Us, Guerrilla Games’ sequence editor for Killzone games (including the Killzone: Shadow Fall PS4 launch title), an animation blending tool at Santa Monica Studio, a level editor at Bend Studio, a visual state machine editor for Quantic Dream, sound editing tools, and many others.项目地址: https://gitcode.com/gh_mirrors/at/ATFATF IronPython集成为C#/.NET开发者提供了在Windows工具开发中嵌入Python脚本引擎的强大能力。索尼互动娱乐的Authoring Tools Framework通过这一集成让工具开发者能够为专业级编辑器添加脚本扩展、自动化测试和用户自定义功能。本文将详细介绍如何在ATF框架中快速集成IronPython实现C#与Python的无缝交互。 为什么选择ATF IronPython集成ATFAuthoring Tools Framework是索尼互动娱乐开发的一套C#/.NET组件库已被用于《最后生还者》关卡编辑器、《杀戮地带》序列编辑器等多个AAA级游戏开发工具。IronPython集成让这些专业工具获得了脚本扩展能力自动化测试编写Python脚本进行UI自动化测试工具扩展用户可通过Python脚本自定义工具功能快速原型使用Python快速验证新功能逻辑批处理操作批量处理游戏资源或数据 快速入门三步集成IronPython1. 添加PythonService到MEF容器ATF使用MEFManaged Extensibility Framework进行组件管理。要启用IronPython支持只需在应用程序的MEF组件列表中添加PythonService// 在Program.cs或App.xaml.cs中 components new TypeCatalog( typeof(PythonService), // IronPython脚本服务 typeof(ScriptConsole), // 交互式Python控制台 typeof(AtfScriptVariables), // 暴露ATF服务给Python typeof(AutomationService) // 自动化脚本支持 );2. 配置AtfScriptVariables暴露服务AtfScriptVariables组件自动将ATF核心服务暴露为Python变量# Python脚本中可直接访问的ATF服务 atfControls # 控件管理服务 atfCommands # 命令系统 atfFile # 文件操作命令 atfEdit # 编辑命令 atfHistory # 历史记录 atfDocReg # 文档注册表 atfDocService # 文档服务 atfPropertyEditor # 属性编辑器3. 使用ScriptConsole交互式编程ATF提供内置的脚本控制台支持实时Python代码执行 核心组件详解PythonService与BasicPythonServiceATF提供两种Python服务实现PythonService完整实现包含交互式控制台BasicPythonService基础脚本引擎无UI界面相关源码位置Framework/Atf.IronPython/BasicPythonService.csFramework/Atf.IronPython/WinForms/PythonService.csScriptConsole交互式环境ScriptConsole为开发者提供类似Python REPL的交互体验支持实时代码执行与调试多行代码编辑历史命令记录自动补全提示源码参考Framework/Atf.Gui.WinForms/Applications/ScriptConsole.csAtfScriptVariables服务桥接AtfScriptVariables是连接C#服务与Python脚本的关键桥梁。它在Initialize方法中将ATF服务注册为Python全局变量// 在AtfScriptVariables.cs中 if (m_controlHostService ! null) m_scriptingService.SetVariable(atfControls, m_controlHostService); if (m_commandService ! null) m_scriptingService.SetVariable(atfCommands, m_commandService); // ... 更多服务注册源码位置Framework/Atf.Gui.WinForms/Applications/AtfScriptVariables.cs 实战示例编写Python自动化测试脚本示例1电路编辑器自动化测试ATF的CircuitEditor示例展示了如何使用Python进行自动化测试# 创建新文档 doc atfDocService.OpenNewDocument(editor) # 添加电路元件 btn editingContext.InsertModule, 100, 100 ) # 验证添加结果 Test.Equal(1, circuitContainer.Elements.Count, 验证模块数量)完整示例Test/FunctionalTests/CircuitEditorTestScripts/AddAllItems.py示例2状态机编辑器测试# 打开状态机文档 doc atfDocService.OpenNewDocument(editor) # 添加状态和转换 state1 editingContext.InsertState state2 editingContext.InsertState transition editingContext.Connect(state1, state2, ...) # 执行撤销/重做测试 atfHistory.Undo() Test.Equal(0, fsm.States.Count, 撤销后状态数量应为0) atfHistory.Redo() Test.Equal(2, fsm.States.Count, 重做后状态数量应为2) 高级技巧与最佳实践1. 自定义Python模块导入ATF的ScriptingService支持动态加载.NET程序集// 在C#中加载自定义程序集 pythonService.LoadAssembly(typeof(MyCustomType).Assembly); pythonService.ImportAllTypes(MyNamespace);2. 性能优化建议预编译脚本对频繁执行的脚本使用预编译对象缓存在Python中缓存频繁访问的.NET对象异步执行长时间脚本使用异步执行避免UI阻塞3. 错误处理与调试try: # 执行可能失败的ATF操作 result atfDocService.SaveDocument(doc, test.atf) except Exception as e: # 输出错误到ATF输出窗口 outputs.WriteLine(脚本执行失败: str(e)) ATF IronPython集成架构图ATF IronPython集成采用分层架构设计┌─────────────────────────────────────────┐ │ Python脚本层 │ │ ┌──────────────────────────────────┐ │ │ │ 用户自定义脚本 自动化测试 │ │ │ └──────────────────────────────────┘ │ ├─────────────────────────────────────────┤ │ ATF服务桥接层 │ │ ┌──────────────────────────────────┐ │ │ │ AtfScriptVariables PythonService│ │ │ └──────────────────────────────────┘ │ ├─────────────────────────────────────────┤ │ ATF核心服务层 │ │ ┌──────────────────────────────────┐ │ │ │ 文档服务 │ 命令系统 │ 控件管理 │ │ │ └──────────────────────────────────┘ │ └─────────────────────────────────────────┘ 常见问题与解决方案Q1: Python脚本无法访问ATF服务解决方案确保AtfScriptVariables组件已正确添加到MEF容器并检查服务名称拼写。Q2: 脚本执行性能较慢解决方案使用ExecuteSilent方法避免输出缓冲或预编译常用脚本片段。Q3: 如何调试Python脚本解决方案使用ScriptConsole的交互模式逐步调试或通过outputs.WriteLine()输出调试信息。Q4: 支持Python 3吗解决方案ATF当前基于IronPython 2.6如需Python 3支持需升级IronPython版本。 实际应用场景游戏开发工具扩展索尼第一方工作室使用ATF IronPython集成扩展了多个专业工具Naughty Dog《最后生还者》关卡编辑器脚本系统Guerrilla Games《杀戮地带》序列编辑器自动化测试Santa Monica Studio动画混合工具用户脚本自动化测试流水线ATF工具通过Python脚本实现批量资源验证UI功能回归测试性能基准测试数据导入/导出验证 性能对比Python脚本 vs C#插件特性Python脚本C#插件开发速度⭐⭐⭐⭐⭐⭐⭐⭐运行时性能⭐⭐⭐⭐⭐⭐⭐⭐热重载支持✅❌内存占用较低较高部署复杂度简单复杂 学习资源与下一步官方文档与示例ATF IronPython模块Framework/Atf.IronPython/Python脚本示例Test/FunctionalTests/工具集成示例查看各示例项目的Program.cs文件进阶学习路径基础集成掌握PythonService和AtfScriptVariables配置脚本开发学习使用ATF服务API进行工具操作自动化测试编写功能测试和性能测试脚本工具扩展为用户提供自定义脚本接口 总结ATF IronPython集成为C#/.NET工具开发带来了前所未有的灵活性。通过简单的MEF组件配置开发者就能为专业级编辑器添加完整的Python脚本支持。无论是自动化测试、工具扩展还是快速原型开发IronPython都提供了强大而优雅的解决方案。索尼互动娱乐的实践证明这种架构设计能够显著提升工具开发效率降低维护成本同时为用户提供强大的自定义能力。如果你正在开发Windows平台的专业工具ATF IronPython集成绝对值得深入探索立即开始克隆ATF仓库运行CircuitEditor或StatechartEditor示例体验Python脚本的强大功能吧【免费下载链接】ATFAuthoring Tools Framework (ATF) is a set of C#/.NET components for making tools on Windows. ATF has been in continuous development in Sony Computer Entertainments (SCE) Worldwide Studios central tools group since early 2005. ATF has been used by most SCE first party studios to make many custom tools such as Naughty Dog’s level editor and shader editor for The Last of Us, Guerrilla Games’ sequence editor for Killzone games (including the Killzone: Shadow Fall PS4 launch title), an animation blending tool at Santa Monica Studio, a level editor at Bend Studio, a visual state machine editor for Quantic Dream, sound editing tools, and many others.项目地址: https://gitcode.com/gh_mirrors/at/ATF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

ATF IronPython集成:如何在C应用中嵌入Python脚本引擎的完整指南

ATF IronPython集成:如何在C#应用中嵌入Python脚本引擎的完整指南 【免费下载链接】ATF Authoring Tools Framework (ATF) is a set of C#/.NET components for making tools on Windows. ATF has been in continuous development in Sony Computer Entertainments …...

基于MCP协议构建本地AI多代理协作平台:Roundtable AI实战指南

1. 项目概述:告别单打独斗,开启AI圆桌会议如果你和我一样,每天在IDE里写代码、调试、优化,那你肯定也经历过这种场景:遇到一个复杂的性能问题,你打开Claude的聊天窗口,把前端错误日志贴进去&…...

CANN/asc-devkit int8转int16 API

asc_int82int16 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

AI代码生成质量评估2026:如何科学衡量Copilot类工具的真实价值

你的团队用了AI编码助手,但你真的知道它带来了多少价值吗?本文提供一套可落地的AI代码生成质量评估框架,从代码正确性到开发者体验,帮你用数据说话。一、为什么需要系统化评估"用了Copilot感觉快了不少"——这是最常见的…...

ChatterUI本地模式深度解析:在移动设备上运行LLM的完整指南

ChatterUI本地模式深度解析:在移动设备上运行LLM的完整指南 【免费下载链接】ChatterUI Simple frontend for LLMs built in react-native. 项目地址: https://gitcode.com/gh_mirrors/ch/ChatterUI ChatterUI是一款基于React Native构建的轻量级LLM前端应用…...

CANN/Ascend C逻辑异或API文档

LogicalXor 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com…...

LDO噪声特性分析与测量优化指南

1. LDO噪声特性与测量基础低噪声线性稳压器(LDO)作为电源管理系统的核心器件,其噪声特性直接影响着精密模拟电路、射频系统和传感器等关键模块的性能表现。与开关电源不同,LDO通过线性调节方式工作,避免了高频开关噪声…...

AI原生运维体系必须跨越的3道生死线:数据治理、模型可观测性、人机协同SLA(SITS 2026闭门研讨纪要)

更多请点击: https://intelliparadigm.com 第一章:AI原生运维体系构建:SITS 2026智能运维专场精华 AI原生运维(AIOps Native)已从概念验证迈入生产就绪阶段。SITS 2026智能运维专场首次提出“感知-推理-执行-进化”四…...

Egg + React + SSR 实战教程:如何快速集成Antd、Dva、Mobx等流行库 [特殊字符]

Egg React SSR 实战教程:如何快速集成Antd、Dva、Mobx等流行库 🚀 【免费下载链接】egg-react-ssr 最小而美的Egg React SSR 服务端渲染应用骨架,同时支持JS和TS 项目地址: https://gitcode.com/gh_mirrors/eg/egg-react-ssr 欢迎…...

高级渗透测试:KitHack多平台后门生成与持久化技术

高级渗透测试:KitHack多平台后门生成与持久化技术 【免费下载链接】KitHack Hacking tools pack & backdoors generator. 项目地址: https://gitcode.com/gh_mirrors/ki/KitHack KitHack是一款功能强大的渗透测试工具包,专为安全研究人员和渗…...

为什么选择update-golang:5大优势对比传统安装方式

为什么选择update-golang:5大优势对比传统安装方式 【免费下载链接】update-golang update-golang is a script to easily fetch and install new Golang releases with minimum system intrusion 项目地址: https://gitcode.com/gh_mirrors/up/update-golang …...

5G上行免调度传输:开启无线通信新篇章

5G上行免调度传输:开启无线通信新篇章 在无线通信技术不断演进的浪潮中,5G以其高速率、低时延和大连接等特性,成为推动社会数字化转型的关键力量。其中,上行免调度传输作为5G技术体系中的一个重要环节,正逐步展现出其独…...

CANN/ops-nn二元交叉熵损失算子

aclnnBinaryCrossEntropyWithLogits 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950D…...

如何3步完成视频字幕提取:本地OCR工具的终极指南

如何3步完成视频字幕提取:本地OCR工具的终极指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取…...

Buzz 与 PSR 标准:如何实现完美兼容的 HTTP 客户端

Buzz 与 PSR 标准:如何实现完美兼容的 HTTP 客户端 【免费下载链接】Buzz PHPs lightweight HTTP client 项目地址: https://gitcode.com/gh_mirrors/buzz/Buzz Buzz 作为 PHP 的轻量级 HTTP 客户端,通过巧妙设计实现了与 PSR 标准的深度兼容&…...

如何高效配置开源工具:华硕笔记本性能管理的完整解决方案

如何高效配置开源工具:华硕笔记本性能管理的完整解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook,…...

CANN/asc-devkit asc_le函数文档

asc_le 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/can…...

Kohya Trainer 图像生成实战:利用训练好的模型进行高质量创作

Kohya Trainer 图像生成实战:利用训练好的模型进行高质量创作 【免费下载链接】kohya-trainer Adapted from https://note.com/kohya_ss/n/nbf7ce8d80f29 for easier cloning 项目地址: https://gitcode.com/gh_mirrors/ko/kohya-trainer Kohya Trainer 是一…...

ARM架构线程私有内存管理及TPMAX0_EL1寄存器详解

1. ARM架构线程私有内存管理概述在ARMv8/v9架构中,线程私有内存(Thread-Private Memory)是一种重要的内存保护机制。它允许操作系统为每个线程定义专属的内存区域,其他线程无法访问,从而提供硬件级别的内存隔离。这种机…...

Windows系统渗透利器:KitHack Winpayloads深度解析

Windows系统渗透利器:KitHack Winpayloads深度解析 【免费下载链接】KitHack Hacking tools pack & backdoors generator. 项目地址: https://gitcode.com/gh_mirrors/ki/KitHack KitHack是一款功能强大的渗透测试工具包,集成了多种黑客工具和…...

掌握显卡性能调优:NVIDIA Profile Inspector 7个实用技巧

掌握显卡性能调优:NVIDIA Profile Inspector 7个实用技巧 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款强大的显卡配置工具,能够深度修改NVIDI…...

Docker Maven Plugin 最佳实践:企业级Docker化部署的完整解决方案 [特殊字符]

Docker Maven Plugin 最佳实践:企业级Docker化部署的完整解决方案 🚀 【免费下载链接】docker-maven-plugin Maven plugin for running and creating Docker images 项目地址: https://gitcode.com/gh_mirrors/doc/docker-maven-plugin 想要快速实…...

Apache Atlas UI实战:从数据资产发现到血缘追溯的完整操作指南

1. Apache Atlas入门:数据治理的瑞士军刀 第一次接触Apache Atlas时,我正被公司混乱的数据资产搞得焦头烂额。报表数据频繁出错却找不到源头,新来的同事总在问"这个字段是什么意思",业务部门抱怨找不到他们需要的数据..…...

【2026前沿】LTX 2.3 深度实战:结合 Gemma 4完全体 打造电影级文生视频/图生视频全流程

一、 为什么 LTX 2.3 是 2026 年视频生成的“性价比之王”?LTX 2.3 在保留了上一代高速生成特性的基础上,在 VAE(变分自编码器) 进行了重构。相比于 LTX 2.0,它的核心优势在于:原生纵向支持:不再…...

XMem实战教程:从DAVIS到YouTubeVOS数据集的完整评估流程

XMem实战教程:从DAVIS到YouTubeVOS数据集的完整评估流程 【免费下载链接】XMem [ECCV 2022] XMem: Long-Term Video Object Segmentation with an Atkinson-Shiffrin Memory Model 项目地址: https://gitcode.com/gh_mirrors/xm/XMem 你是否正在寻找一个强大…...

高速ADC前端变压器相位不平衡分析与优化方案

1. 宽带A/D转换器前端设计中的变压器配置挑战在高速数据采集系统中,变压器作为A/D转换器的前端接口器件,承担着信号隔离和单端转差分的关键任务。然而,实际工程中我们常常遇到一个棘手的问题:当输入信号频率超过100MHz时&#xff…...

《【2026最新】DeepFaceLive 性能飞跃:TensorRT 加速环境配置全攻略(附避坑指南)》

随着数字人直播和实时换脸技术的普及,DeepFaceLive 已成为该领域的标杆。然而,实时推理对显卡的压力极大,许多小伙伴在追求高分辨率或高帧率时经常遇到掉帧。2026年,DeepFaceLive 的核心组件已全面适配 NVIDIA TensorRT。相比传统…...

深入Acid引擎架构:模块化设计与现代C++17的最佳实践指南

深入Acid引擎架构:模块化设计与现代C17的最佳实践指南 【免费下载链接】Acid A high speed C17 Vulkan game engine 项目地址: https://gitcode.com/gh_mirrors/ac/Acid Acid引擎是一个基于Vulkan API的高性能C17游戏引擎,采用先进的模块化架构设…...

webpack-starter 终极指南:如何快速使用 ESLint 和 Stylelint 提升前端代码质量

webpack-starter 终极指南:如何快速使用 ESLint 和 Stylelint 提升前端代码质量 【免费下载链接】webpack-starter ✨ A lightweight foundation for your next webpack based frontend project. 项目地址: https://gitcode.com/gh_mirrors/we/webpack-starter …...

GitHub中文化插件终极实战指南:5分钟实现高效中文开发体验

GitHub中文化插件终极实战指南:5分钟实现高效中文开发体验 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub作为全球…...