找到一个大佬制作的星神少女的spine展示

1.在model里导出所有model到文件夹a;
2.用GitHub - Ahykal/StudioPluginVer: Modded AssetStudio with new features 在plugin里导出spine到文件夹b;
3.将a,b文件夹和.py文件放到同一文件夹里,然后运行.py。
.python修改文件名,代码里a是有fbx的参考文件夹,b是要重命名的spine文件夹,路径可以自行修改。
.根据文件名和大小来匹配,导出的图片先不要修改尺寸,不然大小匹配不上。
.有8组名字大小都相同的,_lv1和_lv1a其中一个重命名不了,还会被移动到另一个文件夹里面。
.可以改成md5值来匹配,还是手动处理吧。
.软件作者直接中文解释得十分详细,看完后使用应该没问题,其他的我也不懂,全靠豆包AI,建议也问问AI。

python代码显示的有问题用zip里的,点击展开

import os
import shutil

def rename_folders_by_file(a_folder, b_folder):
renamed = set() # 记录已重命名的b文件夹下级文件夹路径
count = 0 # 统计重命名文件夹数量

# 获取a文件夹下的所有下级文件夹路径
subfolders_a = [os.path.join(a_folder, d) for d in os.listdir(a_folder) if os.path.isdir(os.path.join(a_folder, d))]
# 获取b文件夹下的所有下级文件夹路径
subfolders_b = [os.path.join(b_folder, d) for d in os.listdir(b_folder) if os.path.isdir(os.path.join(b_folder, d))]

for folder_b in subfolders_b:
    if folder_b in renamed:
        continue
    match_info = {}  # 记录每个a文件夹下级文件夹与当前b文件夹下级文件夹的匹配文件数量
    for folder_a in subfolders_a:
        match_count = _count_matching_files(folder_b, folder_a)
        match_info[folder_a] = match_count

    # 先筛选出有至少两个文件匹配的a文件夹下级文件夹
    valid_folders_a_two_matches = [f for f in match_info if match_info[f] >= 2]
    if valid_folders_a_two_matches:
        target_folder_name = os.path.basename(valid_folders_a_two_matches[0])
        new_dir_b_path = os.path.join(os.path.dirname(folder_b), target_folder_name)
        if os.path.basename(folder_b) == target_folder_name:
            print(f"重命名前后文件夹名相同,跳过对 {folder_b} 的重命名操作")
            continue
        try:
            shutil.move(folder_b, new_dir_b_path)
            print(f"{folder_b} 文件夹重命名成 {new_dir_b_path} 文件夹")
            renamed.add(folder_b)
            count += 1
        except FileExistsError as e:
            print(f"重命名失败,目标文件夹已存在,错误信息: {e}")
        except shutil.Error as e:
            print(f"重命名出现其他错误,错误信息: {e}")
        continue

    # 如果不存在至少两个文件匹配的情况,再考虑只有一个文件匹配的情况
    valid_folders_a_one_match = [f for f in match_info if match_info[f] == 1]
    if valid_folders_a_one_match:
        target_folder_name = os.path.basename(valid_folders_a_one_match[0])
        new_dir_b_path = os.path.join(os.path.dirname(folder_b), target_folder_name)
        if os.path.basename(folder_b) == target_folder_name:
            print(f"重命名前后文件夹名相同,跳过对 {folder_b} 的重命名操作")
            continue
        try:
            shutil.move(folder_b, new_dir_b_path)
            print(f"{folder_b} 文件夹重命名成 {new_dir_b_path} 文件夹")
            renamed.add(folder_b)
            count += 1
        except FileExistsError as e:
            print(f"重命名失败,目标文件夹已存在,错误信息: {e}")
        except shutil.Error as e:
            print(f"重命名出现其他错误,错误信息: {e}")
print(f"总共重命名了 {count} 个文件夹")

def _count_matching_files(folder1, folder2):
“”"
统计两个文件夹中名字和大小都相同的文件数量
“”"
file1_list = os.listdir(folder1)
file2_list = os.listdir(folder2)
count = 0
for file1 in file1_list:
file1_path = os.path.join(folder1, file1)
for file2 in file2_list:
file2_path = os.path.join(folder2, file2)
if os.path.isfile(file1_path) and os.path.isfile(file2_path) and
os.path.basename(file1_path) == os.path.basename(file2_path) and
os.path.getsize(file1_path) == os.path.getsize(file2_path):
count += 1
return count

if name == “main”:
a_folder = “a”
b_folder = “b”
rename_folders_by_file(a_folder, b_folder)

rename.py.txt.zip (1.1 KB)

注意MonoBehaviour资源可能的dll程序集载入需求,在asset list里找一个MonoBehaviour资源,点击后弹出的选择文件夹选择data文件夹下的managed文件夹(有很多.dll的文件夹)。