明日方舟游戏资源库:技术开发者与创意工作者的完整解决方案
明日方舟游戏资源库技术开发者与创意工作者的完整解决方案【免费下载链接】ArknightsGameResource明日方舟客户端素材项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource在游戏开发与数字内容创作领域获取高质量、结构化的游戏资源一直是技术开发者和创意工作者面临的重大挑战。传统方法要么依赖零散的截图工具导致质量参差不齐要么需要复杂的逆向工程流程技术门槛过高。ArknightsGameResource开源项目通过系统化的资源提取和标准化管理为明日方舟游戏资源提供了完整的工程化解决方案解决了素材获取的完整性、一致性和可用性问题。 项目价值定位解决游戏资源管理的三大核心痛点质量与标准化难题传统游戏素材获取方式存在严重的不一致性。通过游戏截图获取的素材往往受限于屏幕分辨率无法获得原始分辨率的透明背景PNG格式。手动提取的素材边缘锯齿明显、色彩失真严重且尺寸规格混乱导致在专业设计工作中需要大量后期处理。完整性与覆盖率问题大多数第三方素材站只收录热门角色和皮肤而ArknightsGameResource项目实现了98%的完整覆盖率包含游戏中所有干员、皮肤、道具、地图资源甚至涵盖限时活动内容和联动角色。这种完整性对于构建全面的游戏数据分析系统和内容创作平台至关重要。技术实现复杂性自行解包游戏资源需要深入理解Unity资源格式、AB包加密机制和游戏文件结构这对非专业开发者构成极高的技术壁垒。该项目通过自动化脚本和标准化目录结构将复杂的资源提取过程简化为简单的git克隆操作大幅降低了使用门槛。️ 技术架构解析模块化资源管理体系标准化目录结构设计项目采用高度模块化的目录架构每个目录都有明确的职能划分ArknightsGameResource/ ├── avatar/ # 干员头像统一180x180像素 ├── skin/ # 角色高清立绘多种分辨率 ├── skill/ # 技能图标系统 ├── portrait/ # 干员半身像抽卡界面专用 ├── item/ # 游戏道具图标库 ├── map/ # 地图场景素材 ├── enemy/ # 敌人素材资源 ├── building_skill/ # 基建技能图标 ├── gamedata/ # 结构化游戏数据JSON/Lua/TXT └── item_rarity_img/ # 道具稀有度视觉标识数据与资源的双向关联gamedata/目录中的结构化数据文件与可视化资源形成了完整的映射关系。以character_table.json为例该文件记录了所有干员的详细属性数据char_002_amiya: { name: 阿米娅, description: 罗德岛的公开领袖..., rarity: 5, profession: CASTER, subProfessionId: corecaster, phases: [...], skills: [...], talents: [...] }这种数据结构使得开发者可以构建完整的角色信息数据库实现素材与数据的双向关联查询为自动化内容生成提供了基础。智能命名规范系统项目采用标准化的命名约定便于程序化处理和自动化工具开发char_002_amiya.png基础角色头像char_002_amiya_2.png精英二阶段立绘char_002_amiya_epoque#4.png特定皮肤版本char_002_amiya_2b.png高清立绘文件b后缀表示大尺寸这种命名规范不仅便于人类阅读更重要的是为自动化处理脚本提供了可预测的文件组织结构。阿米娅精英二阶段立绘2072x2232分辨率采用暗黑哥特与机械融合风格背景为红黑几何框架与破碎柱体展示游戏CG级视觉质量 应用场景展示从资源到产品的转化路径案例一游戏数据分析平台利用gamedata/中的JSON文件和avatar/中的头像资源可以构建完整的干员数据库查询系统。通过Python脚本解析结构化数据结合Web框架快速搭建角色属性分析平台import json import os from pathlib import Path class ArknightsDataAnalyzer: def __init__(self, resource_path): self.resource_path Path(resource_path) self.load_character_data() def load_character_data(self): 加载角色数据并建立索引 char_file self.resource_path / gamedata/excel/character_table.json with open(char_file, r, encodingutf-8) as f: self.character_data json.load(f) # 构建快速查询索引 self.char_index { char_id: { name: info[name], rarity: info[rarity], profession: info[profession], avatar: favatar/{char_id}.png, skin_available: self.check_skin_availability(char_id) } for char_id, info in self.character_data.items() if char_id.startswith(char_) } def check_skin_availability(self, char_id): 检查角色皮肤资源可用性 skin_patterns [ fskin/{char_id}_1b.png, fskin/{char_id}_2b.png, fskin/{char_id}_*b.png ] return any(self.resource_path.glob(pattern) for pattern in skin_patterns) def get_character_stats(self, char_id): 获取角色完整统计信息 if char_id not in self.char_index: return None base_info self.char_index[char_id] detailed_info self.character_data.get(char_id, {}) return { **base_info, skills: detailed_info.get(skills, []), talents: detailed_info.get(talents, []), phases: detailed_info.get(phases, []), total_assets: self.count_character_assets(char_id) } def count_character_assets(self, char_id): 统计角色相关资源文件数量 asset_types [avatar, skin, skill, portrait] count 0 for asset_type in asset_types: pattern f{asset_type}/{char_id}* count len(list(self.resource_path.glob(pattern))) return count # 使用示例 analyzer ArknightsDataAnalyzer(ArknightsGameResource) amiya_stats analyzer.get_character_stats(char_002_amiya) print(f阿米娅资源统计: {amiya_stats[total_assets]}个文件)凯尔希角色立绘采用晶体魔法与生物融合风格背景为黑绿水晶状结构展示游戏美术的视觉表现力案例二自动化内容生成系统基于资源库的标准化结构可以构建自动化内容生成流水线。例如生成角色介绍卡片、技能说明图或社交媒体分享素材from PIL import Image, ImageDraw, ImageFont import json class CharacterCardGenerator: def __init__(self, resource_path): self.resource_path resource_path def generate_character_card(self, char_id, output_path): 生成角色信息卡片 # 加载角色数据 with open(f{self.resource_path}/gamedata/excel/character_table.json, r, encodingutf-8) as f: char_data json.load(f)[char_id] # 加载头像和立绘 avatar Image.open(f{self.resource_path}/avatar/{char_id}.png) # 创建画布 card_width 1200 card_height 800 card Image.new(RGBA, (card_width, card_height), (30, 30, 40, 255)) draw ImageDraw.Draw(card) # 绘制角色信息 self.draw_character_info(draw, char_data, avatar) # 保存卡片 card.save(output_path) return output_path def draw_character_info(self, draw, char_data, avatar): 绘制角色信息到画布 # 这里实现具体的绘制逻辑 # 包括角色名称、稀有度、职业、技能等信息 pass # 批量生成所有角色卡片 generator CharacterCardGenerator(ArknightsGameResource) for char_id in analyzer.char_index.keys(): if analyzer.char_index[char_id][skin_available]: output_file foutput/cards/{char_id}_card.png generator.generate_character_card(char_id, output_file)案例三AI训练数据集构建对于机器学习开发者这个资源库提供了高质量标注的图像数据集。结合gamedata/中的属性信息可以构建用于图像识别、风格迁移或角色分类的AI训练集import pandas as pd from torch.utils.data import Dataset from PIL import Image class ArknightsDataset(Dataset): 明日方舟角色数据集 def __init__(self, resource_path, transformNone): self.resource_path Path(resource_path) self.transform transform # 加载角色元数据 self.metadata self.load_metadata() # 构建样本列表 self.samples [] for char_id, info in self.metadata.items(): # 添加头像样本 avatar_path self.resource_path / favatar/{char_id}.png if avatar_path.exists(): self.samples.append({ image_path: str(avatar_path), char_id: char_id, label: info[profession], rarity: info[rarity] }) # 添加皮肤样本 skin_pattern fskin/{char_id}_*b.png for skin_path in self.resource_path.glob(skin_pattern): self.samples.append({ image_path: str(skin_path), char_id: char_id, label: info[profession], rarity: info[rarity], is_skin: True }) def load_metadata(self): 加载角色元数据 with open(self.resource_path / gamedata/excel/character_table.json, r, encodingutf-8) as f: char_data json.load(f) return { char_id: { name: info[name], profession: info[profession], rarity: info[rarity] } for char_id, info in char_data.items() if char_id.startswith(char_) } def __len__(self): return len(self.samples) def __getitem__(self, idx): sample self.samples[idx] image Image.open(sample[image_path]).convert(RGB) if self.transform: image self.transform(image) return image, sample[label], sample[rarity]陈角色立绘采用赛博朋克与神话生物结合风格背景为巨型黑色巨龙虚影展示游戏美术的叙事表现力 进阶开发指南深度技术实现方案自动化资源更新系统通过Git钩子或定时任务可以建立自动化的素材更新系统确保资源库始终保持最新状态#!/bin/bash # 自动化更新脚本auto_update_resources.sh RESOURCE_DIR/path/to/ArknightsGameResource LOG_FILE/var/log/arknights_update.log VERSION_FILE$RESOURCE_DIR/version BACKUP_VERSION_FILE$RESOURCE_DIR/version.old # 记录开始时间 echo $(date): 开始检查资源更新... $LOG_FILE # 进入资源目录 cd $RESOURCE_DIR || exit 1 # 备份当前版本 if [ -f $VERSION_FILE ]; then cp $VERSION_FILE $BACKUP_VERSION_FILE fi # 执行Git更新 git pull origin main # 检查版本变化 if [ -f $BACKUP_VERSION_FILE ] [ -f $VERSION_FILE ]; then OLD_VERSION$(cat $BACKUP_VERSION_FILE) NEW_VERSION$(cat $VERSION_FILE) if [ $OLD_VERSION ! $NEW_VERSION ]; then echo $(date): 检测到版本更新: $OLD_VERSION - $NEW_VERSION $LOG_FILE # 触发资源处理流程 python3 $RESOURCE_DIR/levels_gen.py python3 $RESOURCE_DIR/levels_split_gen.py # 更新文件索引 python3 -c import json import os from pathlib import Path def build_file_index(resource_dir): 构建文件索引 index {} for root, dirs, files in os.walk(resource_dir): for file in files: if file.endswith((.png, .json, .txt, .lua)): rel_path os.path.relpath(os.path.join(root, file), resource_dir) index[rel_path] { size: os.path.getsize(os.path.join(root, file)), modified: os.path.getmtime(os.path.join(root, file)) } return index resource_path Path($RESOURCE_DIR) index build_file_index(str(resource_path)) with open(resource_path / file_dict.json, w, encodingutf-8) as f: json.dump(index, f, ensure_asciiFalse, indent2) echo $(date): 资源处理完成新版本已就绪 $LOG_FILE else echo $(date): 资源已是最新版本 $LOG_FILE fi else echo $(date): 首次运行或版本文件不存在 $LOG_FILE fi高性能资源检索系统利用file_dict.json文件提供的文件索引可以构建高性能的资源检索系统import json import sqlite3 from pathlib import Path from datetime import datetime class ResourceSearchEngine: 高性能资源搜索引擎 def __init__(self, resource_path): self.resource_path Path(resource_path) self.db_path self.resource_path / resource_index.db self.init_database() def init_database(self): 初始化SQLite数据库索引 conn sqlite3.connect(self.db_path) cursor conn.cursor() # 创建资源索引表 cursor.execute( CREATE TABLE IF NOT EXISTS resource_index ( id INTEGER PRIMARY KEY AUTOINCREMENT, file_path TEXT UNIQUE, file_type TEXT, char_id TEXT, skin_type TEXT, resolution TEXT, file_size INTEGER, modified_time TIMESTAMP, tags TEXT ) ) # 创建全文搜索索引 cursor.execute( CREATE VIRTUAL TABLE IF NOT EXISTS resource_fts USING fts5(file_path, char_id, tags) ) conn.commit() conn.close() def index_resources(self): 索引所有资源文件 conn sqlite3.connect(self.db_path) cursor conn.cursor() # 清空现有索引 cursor.execute(DELETE FROM resource_index) cursor.execute(DELETE FROM resource_fts) # 遍历所有文件并建立索引 for file_path in self.resource_path.rglob(*): if file_path.is_file(): self.index_file(cursor, file_path) conn.commit() conn.close() def index_file(self, cursor, file_path): 索引单个文件 rel_path file_path.relative_to(self.resource_path) file_type file_path.suffix[1:] if file_path.suffix else # 解析角色ID和皮肤类型 char_id None skin_type None if rel_path.parts[0] in [avatar, skin, portrait]: # 从文件名提取角色ID filename file_path.stem if filename.startswith(char_): parts filename.split(_) if len(parts) 2: char_id f{parts[0]}_{parts[1]} # 解析皮肤类型 if len(parts) 2: skin_type _.join(parts[2:]) # 获取文件信息 stat file_path.stat() # 插入索引 cursor.execute( INSERT INTO resource_index (file_path, file_type, char_id, skin_type, file_size, modified_time) VALUES (?, ?, ?, ?, ?, ?) , (str(rel_path), file_type, char_id, skin_type, stat.st_size, datetime.fromtimestamp(stat.st_mtime))) # 插入全文搜索索引 if char_id: cursor.execute( INSERT INTO resource_fts (file_path, char_id, tags) VALUES (?, ?, ?) , (str(rel_path), char_id, f{file_type} {char_id})) def search_by_char(self, char_id): 按角色ID搜索资源 conn sqlite3.connect(self.db_path) cursor conn.cursor() cursor.execute( SELECT file_path, file_type, skin_type, resolution, file_size FROM resource_index WHERE char_id ? ORDER BY file_type, skin_type , (char_id,)) results cursor.fetchall() conn.close() return [ { path: row[0], type: row[1], skin: row[2], resolution: row[3], size: row[4] } for row in results ] def full_text_search(self, query): 全文搜索 conn sqlite3.connect(self.db_path) cursor conn.cursor() cursor.execute( SELECT file_path, char_id, tags FROM resource_fts WHERE resource_fts MATCH ? ORDER BY rank , (query,)) results cursor.fetchall() conn.close() return results # 使用示例 search_engine ResourceSearchEngine(ArknightsGameResource) search_engine.index_resources() # 搜索阿米娅的所有资源 amiya_resources search_engine.search_by_char(char_002_amiya) print(f找到阿米娅相关资源: {len(amiya_resources)}个文件) # 全文搜索 search_results search_engine.full_text_search(amiya skin 2b) print(f全文搜索结果: {len(search_results)}条记录)煌角色立绘采用火焰与机械暴力美学风格背景为破碎平台与火焰特效展示游戏美术的动态表现力资源质量验证系统为确保资源质量可以构建自动化的质量验证系统from PIL import Image import hashlib from pathlib import Path class ResourceQualityValidator: 资源质量验证系统 SUPPORTED_FORMATS [png, jpg, jpeg] MIN_RESOLUTION (100, 100) # 最小分辨率要求 MAX_FILE_SIZE 10 * 1024 * 1024 # 最大文件大小10MB def __init__(self, resource_path): self.resource_path Path(resource_path) self.validation_results [] def validate_all(self): 验证所有资源文件 for file_path in self.resource_path.rglob(*): if file_path.is_file() and file_path.suffix[1:].lower() in self.SUPPORTED_FORMATS: result self.validate_file(file_path) self.validation_results.append(result) return self.generate_validation_report() def validate_file(self, file_path): 验证单个文件 result { file_path: str(file_path.relative_to(self.resource_path)), valid: True, issues: [], checksum: None, resolution: None, file_size: file_path.stat().st_size } try: # 检查文件大小 if result[file_size] self.MAX_FILE_SIZE: result[valid] False result[issues].append(f文件过大: {result[file_size]}字节) # 计算文件哈希 result[checksum] self.calculate_checksum(file_path) # 验证图像文件 if file_path.suffix.lower() in [.png, .jpg, .jpeg]: image_validation self.validate_image(file_path) if not image_validation[valid]: result[valid] False result[issues].extend(image_validation[issues]) result[resolution] image_validation[resolution] except Exception as e: result[valid] False result[issues].append(f验证过程中发生错误: {str(e)}) return result def validate_image(self, file_path): 验证图像文件 validation {valid: True, issues: [], resolution: None} try: with Image.open(file_path) as img: validation[resolution] img.size # 检查分辨率 if img.size[0] self.MIN_RESOLUTION[0] or img.size[1] self.MIN_RESOLUTION[1]: validation[valid] False validation[issues].append(f分辨率过低: {img.size}) # 检查图像模式 if img.mode not in [RGB, RGBA]: validation[valid] False validation[issues].append(f不支持的图像模式: {img.mode}) # 检查图像完整性 img.verify() except Exception as e: validation[valid] False validation[issues].append(f图像文件损坏: {str(e)}) return validation def calculate_checksum(self, file_path, algorithmmd5): 计算文件校验和 hash_func getattr(hashlib, algorithm)() with open(file_path, rb) as f: for chunk in iter(lambda: f.read(4096), b): hash_func.update(chunk) return hash_func.hexdigest() def generate_validation_report(self): 生成验证报告 total_files len(self.validation_results) valid_files sum(1 for r in self.validation_results if r[valid]) invalid_files total_files - valid_files report { summary: { total_files: total_files, valid_files: valid_files, invalid_files: invalid_files, valid_percentage: (valid_files / total_files * 100) if total_files 0 else 0 }, invalid_files: [ { path: r[file_path], issues: r[issues] } for r in self.validation_results if not r[valid] ], file_statistics: self.calculate_statistics() } return report def calculate_statistics(self): 计算文件统计信息 stats { by_format: {}, by_directory: {}, resolution_distribution: {} } for result in self.validation_results: # 按格式统计 ext Path(result[file_path]).suffix.lower() stats[by_format][ext] stats[by_format].get(ext, 0) 1 # 按目录统计 directory Path(result[file_path]).parent stats[by_directory][str(directory)] stats[by_directory].get(str(directory), 0) 1 # 分辨率分布 if result[resolution]: res_key f{result[resolution][0]}x{result[resolution][1]} stats[resolution_distribution][res_key] stats[resolution_distribution].get(res_key, 0) 1 return stats # 使用示例 validator ResourceQualityValidator(ArknightsGameResource) report validator.validate_all() print(f验证完成: {report[summary][valid_files]}/{report[summary][total_files]} 文件有效) print(f有效比例: {report[summary][valid_percentage]:.2f}%) if report[invalid_files]: print(f\n发现 {len(report[invalid_files])} 个无效文件:) for invalid in report[invalid_files][:5]: # 只显示前5个 print(f - {invalid[path]}: {, .join(invalid[issues])}) 最佳实践总结工程化资源管理经验版本控制与持续集成建立完善的版本控制流程是确保资源库稳定性的关键Git工作流优化使用分支策略main分支用于稳定版本develop分支用于日常开发实施代码审查所有资源更新需经过PR审核自动化测试每次提交自动运行资源验证脚本持续集成配置# .github/workflows/validate-resources.yml name: Validate Resources on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Set up Python uses: actions/setup-pythonv4 with: python-version: 3.9 - name: Install dependencies run: | python -m pip install --upgrade pip pip install pillow - name: Run resource validation run: | python scripts/validate_resources.py - name: Generate validation report run: | python scripts/generate_report.py validation_report.md - name: Upload validation report uses: actions/upload-artifactv3 with: name: validation-report path: validation_report.md性能优化策略缓存机制设计import hashlib import pickle from functools import lru_cache from pathlib import Path class ResourceCache: 资源缓存系统 def __init__(self, cache_dir.resource_cache): self.cache_dir Path(cache_dir) self.cache_dir.mkdir(exist_okTrue) lru_cache(maxsize1000) def get_resource_metadata(self, file_path): 获取资源元数据带缓存 cache_key hashlib.md5(str(file_path).encode()).hexdigest() cache_file self.cache_dir / f{cache_key}.pkl # 检查缓存 if cache_file.exists(): with open(cache_file, rb) as f: return pickle.load(f) # 计算元数据 metadata self.calculate_metadata(file_path) # 保存到缓存 with open(cache_file, wb) as f: pickle.dump(metadata, f) return metadata def calculate_metadata(self, file_path): 计算资源元数据 # 实现元数据计算逻辑 passCDN部署策略将静态资源部署到CDN提升全球访问速度实施资源版本化避免缓存问题使用HTTP/2协议优化多资源加载安全与合规管理版权合规检查class CopyrightComplianceChecker: 版权合规检查器 def __init__(self): self.copyright_notice 本项目所有静态资源版权均属于Arknights/上海鹰角网络科技有限公司 仅用于学习和交流侵删。 def generate_license_file(self, output_pathLICENSE_NOTICE.md): 生成版权声明文件 with open(output_path, w, encodingutf-8) as f: f.write(# 版权声明\n\n) f.write(self.copyright_notice) f.write(\n\n## 使用限制\n) f.write(1. 仅限个人学习、研究使用\n) f.write(2. 禁止商业用途\n) f.write(3. 需明确标注素材来源\n) f.write(4. 商业使用需联系版权方获取授权\n) def validate_usage(self, usage_context): 验证使用场景合规性 allowed_contexts [educational, research, personal] if usage_context not in allowed_contexts: return False, 使用场景不符合版权要求 return True, 使用场景合规文档与社区建设自动化文档生成import json from datetime import datetime class DocumentationGenerator: 自动化文档生成器 def __init__(self, resource_path): self.resource_path Path(resource_path) def generate_readme(self): 生成README文档 readme_content f# ArknightsGameResource 资源库 ## 项目概述 明日方舟游戏资源库包含完整的游戏素材和结构化数据。 ## 资源统计 - 最后更新: {datetime.now().strftime(%Y-%m-%d %H:%M:%S)} - 总文件数: {self.count_total_files()} - 资源类型分布: {self.generate_type_distribution()} ## 使用指南 1. 克隆仓库: git clone https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 2. 查看版本: cat version 3. 使用资源: 参考各目录下的资源文件 ## 版权声明 {self.load_copyright_notice()} with open(self.resource_path / README_AUTO.md, w, encodingutf-8) as f: f.write(readme_content) def count_total_files(self): 统计总文件数 return sum(1 for _ in self.resource_path.rglob(*) if _.is_file()) def generate_type_distribution(self): 生成类型分布统计 # 实现类型分布统计逻辑 pass def load_copyright_notice(self): 加载版权声明 copyright_file self.resource_path / LICENSE if copyright_file.exists(): with open(copyright_file, r, encodingutf-8) as f: return f.read() return 版权信息未找到 立即开始你的技术实践快速入门指南环境准备# 克隆资源库 git clone https://gitcode.com/gh_mirrors/ar/ArknightsGameResource # 进入项目目录 cd ArknightsGameResource # 验证资源完整性 python -c import json; print(版本:, open(version).read().strip())基础使用示例# 查看可用资源 import os resource_types [d for d in os.listdir(.) if os.path.isdir(d)] print(f资源类型: {resource_types}) # 统计角色数量 import json with open(gamedata/excel/character_table.json, r, encodingutf-8) as f: data json.load(f) character_count sum(1 for key in data.keys() if key.startswith(char_)) print(f角色总数: {character_count})高级应用开发# 构建完整的资源管理系统 from resource_manager import ArknightsResourceManager manager ArknightsResourceManager(ArknightsGameResource) # 索特定角色资源 amiya_resources manager.search_character(char_002_amiya) print(f阿米娅资源: {len(amiya_resources)}个文件) # 导出资源报告 report manager.generate_resource_report() report.save(resource_analysis.html)下一步行动建议技术深度探索研究levels_gen.py和levels_split_gen.py脚本的实现原理分析游戏资源加密机制和解包流程构建自定义的资源处理管道项目集成方案将资源库集成到现有的游戏开发工作流建立自动化测试和验证流程开发资源监控和告警系统社区贡献指南遵循项目的代码规范和提交准则参与资源验证和质量控制贡献文档和示例代码合规使用提醒严格遵守版权声明要求仅用于学习和研究目的商业使用需获取官方授权通过系统化的资源管理和技术实践ArknightsGameResource项目不仅提供了高质量的素材资源更重要的是建立了一套完整的游戏资源工程化解决方案。无论是游戏开发者、数据分析师还是创意工作者都可以基于这个项目构建自己的应用系统实现从资源获取到价值创造的完整闭环。立即开始你的技术探索git clone https://gitcode.com/gh_mirrors/ar/ArknightsGameResource cd ArknightsGameResource # 探索超过15,000个结构化游戏资源记住真正的技术价值不在于拥有资源而在于如何工程化地管理和创造性地使用这些资源。这个开源项目为你提供了坚实的基础设施现在轮到你在上面构建属于自己的技术解决方案了。【免费下载链接】ArknightsGameResource明日方舟客户端素材项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考