12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using System.Text.RegularExpressions;
- #if UNITY_EDITOR
- using UnityEditor;
- #endif
- using UnityEngine;
- public class LabelUtility : MonoBehaviour
- {
- #region Config
- public TextAsset TextAsset;
- public List<GameObject> Prefabs;
- #endregion
- public void CreateLabels()
- {
- foreach (var Prefab in Prefabs)
- {
- CreateLabel(TextAsset, Prefab);
- }
- }
- private static string Mark = "//Mark";
- private static string Prefix = "public static string ";
- public void CreateLabel(TextAsset textAsset, GameObject prefab)
- {
- StringBuilder stringBuilder = new StringBuilder(textAsset.text);
- Transform[] transforms = prefab.GetComponentsInChildren<Transform>(true);
- Match match = Regex.Match(stringBuilder.ToString(), Mark);
- if (match.Success)
- {
- stringBuilder.Replace(Mark, "", match.Index, match.Length);
- int insertIndex = match.Index + 2;
- for (int i = 0; i < transforms.Length; i++)
- {
- string insertStr = $"\t{Prefix}{transforms[i].name} = \"{transforms[i].name}\";";
- stringBuilder.Insert(insertIndex, insertStr);
- insertIndex += insertStr.Length;
- if (i < transforms.Length - 1)
- {
- stringBuilder.Insert(insertIndex, "\r\n");
- insertIndex += 2;
- }
- else if (i == transforms.Length - 1)
- {
- stringBuilder.Insert(insertIndex, $"\r\n\t{Mark}\r\n");
- }
- }
- string path = AssetDatabase.GetAssetPath(textAsset);
- File.WriteAllText(path, stringBuilder.ToString());
- }
- else
- {
- throw new Exception("没有找到标记");
- }
- }
- }
|