| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import yaml
- yaml_path = "D:\\x25\\trunk\\unity_project\\Assets\\Texture2D\\PartTex_Spriteshop.png.meta"
- def load_meta(path):
- f = open(file=path, mode="r", encoding="utf-8")
- txt = f.read()
- f.close()
- return yaml.load(stream=txt, Loader=yaml.FullLoader)
- meta = load_meta(yaml_path)
- internalIDToNameTable = meta['TextureImporter']['internalIDToNameTable']
- nameFileIdTable = meta['TextureImporter']['spriteSheet']['nameFileIdTable']
- sprites = meta['TextureImporter']['spriteSheet']['sprites']
- def get_id_name_map(tbl):
- name_to_id = {}
- id_to_name = {}
- for _, x in enumerate(tbl):
- _id = x['first'].get(213)
- name = x['second']
- name_to_id.setdefault(name, []).append(_id)
- id_to_name[_id] = name
- return name_to_id, id_to_name
- name_to_id, id_to_name = get_id_name_map(internalIDToNameTable)
- def new_id_to_name(name_to_id):
- id_to_name = {}
- for k, v in name_to_id.items():
- for i, id in enumerate(v):
- id_to_name[id] = k+"_"+str(i)
- return id_to_name
- new_id_name_map = new_id_to_name(name_to_id)
- def modify_id_to_name(internalIDToNameTable):
- for _, x in enumerate(internalIDToNameTable):
- _id = x['first'].get(213)
- new_name = new_id_name_map[_id]
- x['second'] = new_name
- return internalIDToNameTable
- modify_id_to_name(internalIDToNameTable)
- def new_name_to_id(new_id_name_map):
- ret = {}
- for k, v in new_id_name_map.items():
- ret[v] = k
- return ret
- new_name_id_map = new_name_to_id(new_id_name_map)
- print(len(sprites), len(new_id_name_map.keys()))
- print(name_to_id)
- def change_sprite_name(sprites):
- global name_to_id
- for _, v in enumerate(sprites):
- _id = v['internalID']
- old_name = v['name']
- new_name = new_id_name_map.get(_id, None)
- if new_name:
- v['name'] = new_name
- name_to_id[old_name].remove(_id)
- def handle_miss_id(sprites):
- global name_to_id
- for _, v in enumerate(sprites):
- _id = v['internalID']
- old_name = v['name']
- new_name = new_id_name_map.get(_id, None)
- if not new_name:
- new_id = name_to_id[old_name].pop(0)
- v['name'] = new_id_name_map[new_id]
- v['internalID'] = new_id
- change_sprite_name(sprites)
- handle_miss_id(sprites)
- print(name_to_id)
- #print(sprites)
- meta['TextureImporter']['spriteSheet']['nameFileIdTable'] = new_name_id_map
- meta['TextureImporter']['internalIDToNameTable'] = internalIDToNameTable
- def save_yaml(path, meta):
- f = open(path, 'w', encoding='utf-8')
- yaml.dump(meta, f)
- f.close()
- save_yaml(yaml_path+".dd", meta)
|