一、 数据类型与核心容器(AI 脚本里最常出现的“抽屉”)

AI 写脚本时,最喜欢用以下几种方式来存取数据(比如游戏资产路径、NPC 列表、打包配置)。

1. 字符串 (String) 与 路径处理

自动化脚本天天都要处理文件路径。

# 1. 基础字符串
project_name = "Blaster_Project"

# 2. 绝对利器:f-string(字符串格式化,拼接路径最常用)
version = "v1.0.2"
# 自动拼接成:D:/UnrealProjects/Blaster_Project/Build_v1.0.2
build_path = f"D:/UnrealProjects/{project_name}/Build_{version}" 

# 3. 原始字符串 (r"..."):防止反斜杠 \ 被当成转义字符
# Windows 路径里有大量的 \,前面加个 r 就不用写双反斜杠了
win_path = r"C:\Program Files\Epic Games\UE_5.4"

2. 列表 (List)

有序的集合,相当于 C++ 的 TArray。用来存一串同类东西(比如一堆待打包的地图名)。

# 创建列表
maps_to_test = ["Map_Desert", "Map_City", "Map_Factory"]

# 添加元素
maps_to_test.append("Map_Base") 

# 循环遍历(AI 写自动化冒烟测试最常用的结构)
for map_name in maps_to_test:
    print(f"正在启动自动化测试:{map_name}")

3. 字典 (Dictionary)

键值对集合,相当于 C++ 的 TMap。用来存配置项(比如打包参数)。

# 创建字典
build_config = {
    "engine_path": r"C:\UE_5.4",
    "configuration": "Shipping",  # 咱们说好的正式发布版!
    "clean_old_builds": True,
    "max_retry_times": 3
}

# 读取数据
print(build_config["configuration"])  # 输出: Shipping

# 修改或新增
build_config["version"] = "1.0.3"

二、 逻辑控制(指挥 AI 跑流水线的分叉口)

1. 条件判断 (if - elif - else)

status = "Crash"

if status == "Success":
    print("打包成功,准备上传 Steam!")
elif status == "Crash":
    print("游戏崩溃!触发 AI 堆栈日志分析机制...")  # 咱们的智能化高级操作
else:
    print("未知错误,请人工检查。")

2. 异常处理 (try - except)——效能岗的灵魂

自动化流水线最怕中间因为某个文件找不到就彻底死机。用 try 兜住,即使报错也能抓取日志并继续运行。

try:
    # 尝试读取引擎报错日志
    with open("UnrealBuildTool.log", "r") as log_file:
        content = log_file.read()
except FileNotFoundError:
    # 如果文件不存在,不会死机,而是执行这里的备用逻辑
    print("警告:未找到日志文件,可能打包未开始。")
except Exception as e:
    # 捕获其他任何未知错误
    print(f"发生未知异常: {e}")

三、 文件与系统操作(自动化脚本的硬核大招)

AI 帮你写自动化工具时,高频调用的都是 Python 的内置标准库。看懂这几个,你就能指挥 AI 搬运资产、执行命令行。

1. ospathlib 模块:操控文件系统

import os
from pathlib import Path

# 判断文件夹是否存在,不存在就建一个(比如建一个 Build 产物文件夹)
output_dir = Path("D:/BuildOutput")
if not output_dir.exists():
    output_dir.mkdir(parents=True, exist_ok=True)

# 获取某个目录下所有的 .pak 资产文件
content_path = "D:/Blaster/Content/Paks"
if os.path.exists(content_path):
    files = os.listdir(content_path)
    pak_files = [f for f in files if f.endswith(".pak")]
    print(f"找到的打包资源: {pak_files}")

2. subprocess 模块:调用外部程序(核心!核心!)

不管是调用虚幻引擎的编译命令行(RunUAT/UHT),还是调用 SteamCMD 上传包体,AI 绝对会用这个模块。

import subprocess

# 模拟调用 SteamCMD 的命令行指令
# 相当于在 CMD 里执行:steamcmd.exe +login MyAccount +quit
cmd = ["steamcmd.exe", "+login", "MyAccount", "+quit"]

print("正在启动 SteamCMD 流水线...")
# run 会等待命令执行完毕,并捕获返回状态
result = subprocess.run(cmd, capture_output=True, text=True)

if result.returncode == 0:
    print("SteamCMD 运行成功!")
else:
    print(f"运行失败,错误日志:\n{result.stderr}")

四、 如何高效指挥 AI 写 Python 脚本?(终极实战技巧)

遇到复杂的自动化需求,只需要给 AI 喂这样的 “黄金 Prompt 结构”

💡 给 AI 发号施令的模板:

“请帮我写一个 Python 3 脚本,要求如下:

  1. 功能: 监控 D:/Test 目录下的日志文件变化。

  2. 逻辑: 如果发现日志中包含关键词 USTRUCT 报错,利用 try-except 捕获异常,并提取报错行前后的 5 行上下文。

  3. 核心库: 使用 pathlib 模块处理路径,确保在 Windows 环境下运行不会因为 \ 转义报错。

  4. 代码规范: 关键步骤加上中文注释,方便我后续维护。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐